rtweet:get_时间轴()在随机点截断

bd1hkmkf  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(123)

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

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)
}

(the tweet ID是我个人账户中的推文,发布日期是我感兴趣的开始/结束日期,即2020年1月1日至2022年12月31日。
这对大多数用户来说都很好,但是对于他们中的一些人来说,它实际上并没有在时间范围内抓取所有推文,而是在每个相关用户不同的随机点切断。推文的数量实际上也是每个用户不同的,例如对于用户@AfD,它收集了1003条推文,而对于用户@AfDimBundestag,它返回了2718条推文。然而,在这两种情况下,它在2020年1月1日的实际日期之前切断,在这些情况下,分别在2020/2021年中期(从最新的推文开始)。我在收集推文的所有帐户中有大约10-20%遇到过这个问题,其余的一切都很好。
显然,我尝试的主要解决方案是对相关用户再次使用get_时间轴(),调整时间框架,使其实际上以最后一条抓取的tweet的ID结束,而不是一般的结束日期tweet。我尝试了循环格式和使用单个用户。下面是@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个观察结果。我知道一个事实,即帐户在时间范围内发了tweets,并通过Twitter搜索手动检查。
我也试过使用search_tweets()和search_tweets2()来获取相关用户的tweets,但这也不起作用。
有没有人有任何解决这个问题的办法?我知道不幸的是,由于旧的Twitter API被关闭,有些东西不再工作了,但我希望也许可以找到一些东西。如果你需要更多的信息,让我知道。

s3fp2yjn

s3fp2yjn1#

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

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

这需要最新的rtweet1.2.0.9002(我只是把它推到了仓库)

相关问题