Tweepy:使用twitter v2 api检索用户名信息时出现问题



从twitter v1.1 API的tweepy API迁移到twitter v2 API的tweepy-Client时遇到问题。我正在尝试获取推文的查询,并将它们存储在数据帧中,然后存储在csv文件中,以供稍后分析。我使用类似的东西

import tweepy as tw
import pandas as pd
df = pd.DataFrame()
for tweet in tw.Paginator(
client.search_recent_tweets, 
query,
expansions=['author_id'],
tweet_fields=["public_metrics"],
user_fields=['username'],
max_results=100).flatten(limit=10):
tweet.data['retweet_count'] = tweet.data['public_metrics']['retweet_count']
df = df.append(tweet.data,ignore_index=True)

我可以正确地获取retweet_ count号并将其添加到数据帧中;用户名";从user_fields。

感谢您的帮助。也许我只是一个新手,但我可以向你保证,我已经搜索了一整天的解决方案!

编辑:

事实证明,答案实际上在文档中!:(问题是";"压平";方法,该方法丢弃";包括";属性,这是我存储数据的地方。我修改了如下代码:

query = '#scienza -is:retweet lang:it'
df = pd.DataFrame()
for tweet_batch in tw.Paginator(client.search_recent_tweets,
query, expansions=['author_id'],tweet_fields=["public_metrics"],user_fields=['username'],max_results=100):
data = tweet_batch.data
users = tweet_batch.includes['users']
print(len(data),len(users))
users_df = pd.DataFrame(users)
users_df.columns = ['author_id','author_name','author_username']
tweet_batch_df = pd.concat([users_df, pd.DataFrame(data)], axis=1)
df = df.append(tweet_batch_df,ignore_index=True)

现在我的问题是:数据和用户列表的长度不同,所以我无法检索所有推文的用户名!";打印";声明是:

100 82
100 81
56 44

我查看了一条作者失踪的推文,我认为这是一条带有标签"#scinza";我可以使用";合并";语句而不是";concat";但我仍然会在用户名栏中获得近20%的NaN。

事实上,这是因为有多篇文章来自同一作者。使用merge on";author_id";而不是concat解决了问题。

最新更新