Twython调用get_retweets返回的转发数远低于推文实际显示值
问题成因
- 你调用的是Twitter API v1.1的
statuses/retweets/:id接口,该接口本身存在硬限制:默认无参数时仅返回最近20条转发记录,即使传入最大参数也最多只能返回最近100条转发,无法返回更早的转发数据。 - 除开接口本身的上限,部分转发用户如果是私有账号、被平台限制、或你的调用账号无权限查看该用户信息,也不会被纳入返回结果,不过该因素对数据量的影响远小于接口限制。
解决方案
- 优先优化现有接口调用:调用
get_retweets方法时增加count=100参数,先将单次调用可获取的转发量拉到当前接口的上限,修改后的代码如下:
retweets = self.twitter.get_retweets(id=tweet.get("id"), count=100)
- 若需要获取超过100条的全量公开转发数据,需切换至Twitter API v2的
Retweets lookup接口,该接口支持分页拉取,可通过分页令牌逐页拉取到所有公开的转发记录;如果当前使用的Twython库不支持v2接口,可以更换为支持v2接口的Python SDK。 - 拉取过程中提前做好对应接口的速率限制适配,若使用免费版接口需注意调用配额上限,也可以继续沿用你现有的多账号轮询逻辑规避限流问题。
内容的提问来源于stack exchange,提问作者Arfath Yahiya
相关产品推荐
相关产品推荐

