使用rtweet包爬取Twitter数据出现Rate limit exceeded - 88报错如何解决
报错含义说明
你遇到的Rate limit exceeded是X(原Twitter)开放平台的API限流触发提示。平台为了避免接口被恶意调用,对不同权限的开发者账号设置了固定时间窗口内的请求次数上限:普通免费开发者账号的搜索接口规则为每15分钟最多发起450次请求,你代码中设置的单次拉取数量n=10000000远超过接口单次请求最多返回的100条结果上限,需要拆分出大量分页请求,短时间内就耗尽了15分钟窗口期的请求配额,因此触发了限流提示。
限流问题解决方案
- 合理调整拉取数量参数,不要设置远大于实际需求的
n值,根据实际需要的样本量设置参数,减少不必要的分页请求消耗限额。 - 将rtweet包升级到最新版本,旧版本rtweet对X平台最新的API限流规则适配不完善,可能会出现你设置的
retryonratelimit=TRUE参数失效的问题,更新包后该参数可自动等待限流窗口期重置后继续拉取数据。 - 申请更高权限的开发者账号,如果你是学术研究用途,可以申请X平台的学术研究类开发者账号,该类账号的搜索接口请求配额远高于普通免费账号,可满足大量数据拉取的需求。
- 手动添加请求等待逻辑,在两次
search_tweets调用之间插入Sys.sleep()函数设置等待时长,比如单次拉取完成后等待900秒(15分钟)等限流窗口期重置后再发起下一次搜索请求。 - 拆分搜索任务,把大批量的搜索需求拆分到不同的时间段分散执行,避免短时间内集中调用接口耗尽请求配额。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

