如何使用Tweepy API获取每条推文的转发者ID?
问题:使用Tweepy获取Twitter推文的转发者ID
我一直在用Tweepy从Twitter抓取各类信息,比如含特定关键词的推文、用户ID、点赞数、转发者ID等。现在我尝试获取特定推文的转发者ID,查阅Tweepy文档后得知可使用接口:
API.get_retweets(id, *, count, trim_user)
我查阅了相关问题,但仍不清楚如何正确获取转发者ID,以下是我的代码:
number_of_tweets=10 tweets = [] like = [] time = [] author=[] retweet_count=[] tweet_id=[] retweets_list=[] retweeters_list=[] for tweet in tweepy.Cursor(api.search_tweets,q='bullying',lang ='en', tweet_mode="extended").items(number_of_tweets): tweet_id.append(tweet.id) # 替代i._json['id'] tweets.append(tweet.full_text) like.append(tweet.favorite_count) time.append(tweet.created_at) author.append(tweet.user.screen_name) retweet_count.append(tweet.retweet_count) retweets_list = api.get_retweets(tweet.id) for retweet in retweets_list: retweeters_list.append(retweet.user.id) # print(retweet.user.id)
代码分析与解决方案
你的代码逻辑本身是可行的:通过api.get_retweets(tweet.id)获取目标推文的转发记录,遍历记录后用retweet.user.id就能拿到转发者的ID,最终这些ID会被存入retweeters_list。不过可以优化几个点,避免潜在问题:
接口限制说明:
get_retweets接口默认最多返回100条转发记录,如果目标推文的转发数超过100,你只能获取前100个转发者的ID。如果需要获取全部转发者,需改用API.get_retweeters(注意该接口需要相应权限,且有严格的调用次数限制)。数据结构优化:
你的retweeters_list会把所有推文的转发者ID混在一起,无法区分哪些ID属于哪条推文。建议改用二维列表,比如retweeters_per_tweet,每条推文对应的转发者ID单独存入一个子列表,方便后续关联分析。异常处理:
调用Twitter API时可能遇到请求超限、推文已被删除等错误,加上try-except块可以避免程序直接崩溃。
修正后的示例代码
import tweepy # 假设你已完成API授权初始化(如api = tweepy.API(auth)) number_of_tweets = 10 tweets = [] like = [] time = [] author = [] retweet_count = [] tweet_id = [] retweeters_per_tweet = [] # 二维列表,存储每条推文对应的转发者ID for tweet in tweepy.Cursor(api.search_tweets, q='bullying', lang='en', tweet_mode="extended").items(number_of_tweets): # 收集推文基础信息 tweet_id.append(tweet.id) tweets.append(tweet.full_text) like.append(tweet.favorite_count) time.append(tweet.created_at) author.append(tweet.user.screen_name) retweet_count.append(tweet.retweet_count) # 获取并存储当前推文的转发者ID try: # 指定count参数获取最多100条转发记录 retweets_list = api.get_retweets(tweet.id, count=100) current_retweeters = [retweet.user.id for retweet in retweets_list] retweeters_per_tweet.append(current_retweeters) except tweepy.TweepyException as e: print(f"获取推文{tweet.id}的转发者失败: {e}") retweeters_per_tweet.append([]) # 验证输出示例 for idx, tid in enumerate(tweet_id): print(f"推文ID: {tid}") print(f"转发者ID列表: {retweeters_per_tweet[idx]}\n")
内容的提问来源于stack exchange,提问作者drika
相关产品推荐
相关产品推荐

