如何使用Tweepy API获取某条推文的所有转发者?
解决Tweepy获取推文所有转发者的问题
嗨,我明白你遇到的麻烦了——你想用Tweepy的Cursor分页获取某条推文的所有转发,但api.retweets()这个方法确实不支持分页,它最多只能返回100条转发内容,这就是触发报错的原因。
要拿到这条推文的全部转发者,得换个思路:使用专门获取转发者ID的API方法,这个方法支持分页,配合Cursor就能遍历所有结果。下面是具体的实现步骤和代码:
方法说明
Twitter API提供了statuses/retweeters/ids端点(对应Tweepy的api.get_retweeter_ids()方法),用来获取某条推文的所有转发者ID,这个方法天生支持分页,所以可以用Cursor来拉取全部结果。如果需要转发者的详细信息(比如用户名、个人简介等),还能通过批量查询用户的方法补充获取。
完整代码示例
import tweepy # 假设你已经完成API认证,api是初始化好的Tweepy API对象 target_tweet_id = "替换为你的目标推文ID" # 第一步:获取所有转发者的ID all_retweeter_ids = [] for user_id in tweepy.Cursor(api.get_retweeter_ids, id=target_tweet_id).items(): all_retweeter_ids.append(user_id) print(f"共获取到 {len(all_retweeter_ids)} 个转发者ID") # 第二步(可选):批量获取转发者的详细用户信息 # 注意:Twitter API限制每次lookup_users最多查询100个用户ID,所以分批次处理 for batch_start in range(0, len(all_retweeter_ids), 100): batch_ids = all_retweeter_ids[batch_start:batch_start+100] retweeter_users = api.lookup_users(user_ids=batch_ids) for user in retweeter_users: print(f"转发者:@{user.screen_name} | 用户ID:{user.id} | 简介:{user.description}")
注意事项
- 速率限制:
get_retweeter_ids的API速率限制是每15分钟15次请求,每次最多返回100个ID,Tweepy的Cursor会自动处理分页,但如果转发者数量极大,可能需要注意等待时间,避免触发限制。 - 权限要求:确保你的API密钥有足够的权限访问这些端点,一般标准的API密钥就能满足需求。
内容的提问来源于stack exchange,提问作者robert patrik
相关产品推荐
相关产品推荐

