rtweet包get_timeline()随机截断推文问题求助
问题:使用rtweet的get_timeline()抓取德国政党/政客推文时出现截断问题
背景与原代码
为抓取德国政客与政党2020年1月1日至2022年12月31日的推文,使用rtweet包的get_timeline()循环处理账号列表,通过个人账号对应时间范围的推文ID设置since_id和max_id界定时间区间,代码如下:
for (user in afd_functional_users) { # 获取用户时间线推文 user_tweets <- get_timeline(user, n = Inf, parse = TRUE, include_rts = FALSE, exclude_replies = TRUE, trim_user = TRUE, since_id = "1211587346791063552", max_id = "1609503765043855360", retryonratelimit = FALSE, verbose = TRUE) # 添加用户账号列为数据框字段 user_tweets$handle <- user # 将当前用户推文合并到主数据框 afd_df <- rbind(afd_df, user_tweets) # 短暂暂停避免触发限流 Sys.sleep(5) }
遇到的问题
多数账号的推文抓取正常,但有10-20%的账号无法获取目标时间范围内的全部推文,会出现随机截断,且每个账号的截断点不同:
- 例如@AfD仅抓取到1003条推文,提前终止在2020/2021年(抓取顺序为从最新推文往前)
- @AfDimBundestag仅抓取到2718条推文,同样提前终止在2020/2021年
- 已手动确认这些账号在目标时间范围内有推文发布
尝试过的无效解决方法
- 针对截断账号重新调用
get_timeline(),将max_id调整为上次抓取到的最后一条推文ID,代码示例如下,但运行后返回0条数据:
user_tweets <- get_timeline("AfD", n = Inf, parse = TRUE, include_rts = FALSE, exclude_replies = TRUE, trim_user = TRUE, since_id = "1211587346791063552", max_id = "1321067464114032642", retryonratelimit = TRUE, verbose = TRUE)
- 尝试使用
search_tweets()和search_tweets2(),未解决问题 - 注:旧Twitter API已停用,无法依赖旧接口解决
请求可行解决方案
希望得到有效的解决办法,如需更多信息可补充。
内容的提问来源于stack exchange,提问作者Jule
相关产品推荐
相关产品推荐

