我不明白
你好,我正在尝试从多个用户那里获取最近的推文。在那里,我创建了一个嵌套循环,但我的问题是,它覆盖了"berlintweets"。因此,循环工作,但它应该添加数据,而不是覆盖它。
真的非常感谢任何帮助或建议。我是一个完全的初学者,他很自豪他能走到这一步。但现在我很难过,不知道我能做什么/改变什么了。
提前感谢大家!
import tweepy
import config
import pandas as pd
client = tweepy.Client(bearer_token=config.BEARER_TOKEN)
Liste_Namen = pd.read_csv('Namen.csv', delimiter=',')
tweet_id_list = [""]
tweet_text_list = [""]
tweet_created_list = [""]
berlintweet = [""]
for user_name in Liste_Namen['ids']:
berlintweet = tweepy.Paginator(client.get_users_tweets, id=user_name, exclude= ["replies", "retweets"], tweet_fields=["created_at"], max_results=100).flatten(limit=200)
for tweet in berlintweet:
tweet_id_list.append(tweet.id)
tweet_text_list.append(tweet)
tweet_created_list.append(tweet.created_at)
df = pd.DataFrame({
'name': config.USER_ID,
'tweet_id': tweet_id_list,
'tweet_text': tweet_text_list,
'tweet_created': tweet_created_list,
})
df.to_csv('BerlinTest2.csv', sep=',', index=False, encoding='utf-8-sig')
应该可以添加到berlintweet
,就像您添加到其他列表一样,例如tweet_id_list
:
page = tweepy.Paginator(
client.get_users_tweets,
id=user_name,
exclude=["replies", "retweets"],
tweet_fields=["created_at"],
max_results=100)
berlintweet.append(page.flatten(limit=200))
有关更多信息,以下内容可能对您有用:https://docs.python.org/3/library/stdtypes.html mutable-sequence-types
它并没有立即变得明显,我什么flatten()
返回,但名称暗示我,这是一个列表(https://docs.tweepy.org/en/latest/v2_pagination.html)。但是,您也可以将生成器传递给append()
。它应该就地修改被调用的列表
同样,您用字符串初始化tweet_id_list
,然后尝试访问每个元素的.id
,这将不起作用。字符串没有.id
。同样的问题也适用于berlintweet = [""]
。你想用berlintweet = []
来初始化它。这要么是复制粘贴错误,要么是您仍然不清楚如何用空列表初始化变量。空列表是[]
,而[""]
表示仅以空字符串作为元素的列表。实际上,它可能适用于所有四个列表,因为我怀疑没有很好的理由在那里有一个空字符串,除非它是这部分代码外部的一些需求。
当您将tweet文本附加到tweet_text_list
时,您可能想要写tweet.text
。我相信文档是这么说的,但是我现在没有能力测试代码,因为我没有Twitter帐户。
对于这个答案的其他读者,tweet可用字段的文档在这里:
https://developer.twitter.com/en/docs/twitter-api/fields
https://docs.tweepy.org/en/latest/v2_models.html推