rtweet:get_timeline() 在随机点中断

问题描述 投票:0回答:1

我正在尝试抓取德国政客和政党的推文。我使用 get_timeline() 遍历句柄向量,如下所示:

for (user in afd_functional_users) {

  # get user timeline tweets
  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)
  
  # add the user handle as a column to the dataframe
  user_tweets$handle <- user
  
  # append the user's tweets to the main dataframe
  afd_df <- rbind(afd_df, user_tweets)
  
  # pause briefly to avoid rate limit errors
  Sys.sleep(5)
}

(推文 ID 是我个人帐户中发布的推文,这些推文是在我感兴趣的日期作为开始/结束日期发布的,即 2020 年 1 月 1 日至 2022 年 12 月 31 日)。

这对大多数用户来说效果很好,但是对于其中一些用户来说,它实际上并没有抓取时间范围内的所有推文,而是在一个随机点切断,这对每个相关用户来说都是不同的。每个用户的推文数量实际上也不同,例如,对于用户@AfD,它收集了 1003 条推文,而对于用户@AfDimBundestag,它返回了 2718 条推文。但是,在这两种情况下,它都在实际日期 2020 年 1 月 1 日之前停止,在这些情况下分别是在 2020/2021 年中期(从最新的推文开始)。在我收集推文的所有帐户中,大约有 10-20% 的帐户遇到了这个问题,其余一切都很好。

显然,我尝试的主要解决方案是为相关用户再次使用 get_timeline(),调整时间范围以实际以最后抓取的推文的 ID 结束,而不是通用的结束日期推文。我以循环格式和使用单一用户进行了尝试。这是@AfD 帐户的示例:

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)

代码运行良好,但检查 user_tweets 返回 0 个观察值。我知道这些帐户在时间范围内发了推文,并通过 Twitter 搜索手动检查了这一点。

我也尝试过使用 search_tweets() 和 search_tweets2() 的版本来获取相关用户的推文,但这也没有用。

有人有办法解决这个问题吗?不幸的是,我知道由于旧的 Twitter API 被关闭,有些东西不再工作了,但我希望也许能找到一些东西。如果您需要更多信息,请告诉我。

r twitter rtweet twitter-api-v1
1个回答
0
投票

我不知道为什么 API 不起作用,但如果你有学术访问权限,你可以通过这样的方式获取所有推文:

tweets_AfD <- tweet_search_all("from:AfD", 
                               since_id = "1211587346791063552",
                               until_id = "1321067464114032642", n = Inf)
tw <- lookup_tweets(tweets_AfD$id)

这需要最新的rtweet 1.2.0.9001(我刚推到仓库)

© www.soinside.com 2019 - 2024. All rights reserved.