You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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。不过可以优化几个点,避免潜在问题:

  1. 接口限制说明:
    get_retweets接口默认最多返回100条转发记录,如果目标推文的转发数超过100,你只能获取前100个转发者的ID。如果需要获取全部转发者,需改用API.get_retweeters(注意该接口需要相应权限,且有严格的调用次数限制)。

  2. 数据结构优化:
    你的retweeters_list会把所有推文的转发者ID混在一起,无法区分哪些ID属于哪条推文。建议改用二维列表,比如retweeters_per_tweet,每条推文对应的转发者ID单独存入一个子列表,方便后续关联分析。

  3. 异常处理:
    调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:05:23