r - 解决在 R 中使用 twitteR 包提取大量用户信息的速率限制

标签 r twitter rate-limiting

我正在尝试使用 R 中的 twitteR 包从 Haaretz Twitter feed (@haaretzcom) 下载所有关注者及其信息(位置、创建日期等)。Twitter feed 有超过 90,000 个关注者能够使用下面的代码下载完整的关注者列表没有问题。

require(twitteR)
require(ROAuth)
#Loading the Twitter OAuthorization
load("~/Dropbox/Twitter/my_oauth")

#Confirming the OAuth
registerTwitterOAuth(my_oauth)

# opening list to download
haaretz_followers<-getUser("haaretzcom")$getFollowerIDs(retryOnRateLimit=9999999)

但是,当我尝试使用 LookupUsers 函数提取他们的信息时,我遇到了速率限制。使用 retryOnRateLimit 的技巧在这里似乎不起作用:)

 #Extracting user information for each of Haaretz followers
 haaretz_followers_info<-lookupUsers(haaretz_followers)

 haaretz_followers_full<-twListToDF(haaretz_followers_info)

 #Export data to csv
 write.table(haaretz_followers_full, file = "haaretz_twitter_followers.csv",  sep=",")

我相信我需要在关注者列表(haaretz_followers)上编写一个 for 循环和子样本以避免速率限制。在此循环中,我需要包括某种休息/暂停,例如 Keep downloading tweets within the limits using twitteR package 。 twitteR 包对于如何进行此操作有点不透明,而且我是在 R 中编写循环的新手。最后,我知道,根据您在 R 中编写循环的方式,会极大地影响运行时间。如果您能提供任何帮助,我们将不胜感激!

最佳答案

像这样的事情可能会完成工作:

for (follower in haaretz_followers){
  Sys.sleep(5)
  haaretz_followers_info<-lookupUsers(haaretz_followers)

  haaretz_followers_full<-twListToDF(haaretz_followers_info)

  #Export data to csv
  write.table(haaretz_followers_full, file = "haaretz_twitter_followers.csv",  sep=",")
}

每次通话之间您会休眠 5 秒。我不知道您的速率限制是多少 - 您可能需要或多或少地遵守 Twitter 的政策。

您认为在 R 中构建循环的方式会影响性能是正确的,但在这种情况下,您故意插入一个暂停,该暂停的时间比设计不良的循环所浪费的 CPU 时间要长几个数量级,所以你真的不需要担心这个。

关于r - 解决在 R 中使用 twitteR 包提取大量用户信息的速率限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16302232/

相关文章:

r - HTS 包 : how to specify a network-like hierarchy of forecasts?

facebook - 推特(社交网络)数据集

ios - 更改 Twitter Fabric 应用程序的组织

python - 使用 NLTK for Python 训练用于情感分析的推文语料库

node.js - Node 服务器中的 Express-rate-limit 与 NGINX

javascript - 定时 promise 队列/节流

kotlin - javalin中限制选项方法

r - 不了解..密度的行为

r - 使用 plotly 中的标记将抖动添加到箱线图

r - 如何在图例中显示geom_abline的abline