学术账号用Tweepy爬取Twitter数据触发429请求超限错误咨询
报错成因
- Tweepy自带的
wait_on_rate_limit参数仅适配Twitter标准接口的短周期请求频次限制,学术研究账号专属的全归档搜索接口的产品级限流规则不在其覆盖范围内,因此该参数无法拦截本次触发的429错误。 - 基础学术研究账号的全归档搜索接口有两层限制:除了每月1000万条的推文采集配额外,还有每分钟最多300次请求的频次限制,以及月度请求次数配额,你当前的请求触发了上述任意一种硬限制都会返回该报错。
- 你当前代码中的时间范围设置存在问题:
since_date设为2007年1月1日,until_date设为2021年1月1日,时间跨度长达14年,远大于你预期的单自然日范围,单次查询会瞬间消耗大量请求配额,直接触发限流。
可行解决方案
- 修正时间范围参数:将查询区间调整为单自然日,例如采集2023年10月1日的推文时,
since_date设为202310010000,until_date设为202310012359,避免大跨度区间带来的超额请求消耗。 - 手动增加请求间隔:全归档接口不被Tweepy自动限流逻辑覆盖,你可以在代码中逐页处理查询结果,每拉取一页结果后增加0.2秒左右的延迟,适配每分钟300次的请求上限。
- 拆分采集任务:将单日采集任务进一步按小时拆分为24个更小的时间窗口,每完成一个窗口的采集后暂停1-2分钟再执行下一个,避免短时间内请求量冲高触发限流。
- 配置单请求最大返回条数:调用
search_full_archive时新增maxResults=100参数,单请求拉满最高100条的返回上限,减少总请求次数,降低限流触发概率。 - 核对账号剩余配额:登录Twitter开发者后台查看当前账号的推文采集配额、接口请求配额的剩余量,若确为配额耗尽,可等待下个自然月配额重置,或申请更高等级的学术账号权限。
内容的提问来源于stack exchange,提问作者sawsan alzubi
相关产品推荐
相关产品推荐

