【问题标题】:Keep downloading tweets within the limits using twitteR package使用 twitteR 包继续在限制范围内下载推文
【发布时间】:2012-02-23 11:33:05
【问题描述】:

我正在尝试使用 R 中的 twitteR 包下载推文。我有一个推特用户列表,我想下载他们的推文。我不断收到错误

Error in .self$twFromJSON(out) : 
  Error: Rate limit exceeded. Clients may not make more than 150 requests per hour.

我怎样才能减慢请求的速度,以便它可以在限制范围内持续下载而不会中断?下面是一个示例代码。

# Load package
library(twitteR)

# Read list of users from file
users <- read.table('listOfTwitterUsers.txt')

# Pause for 10 sec
sleepTime = 10

for (user in users){

   # Download latest 2000 tweets from the user's timeline
   tweets <- userTimeline(user, 2000)

   # Extract tweets
   tweets <- unlist( lapply(tweets, function(t) t$getText() ) )

   # Save tweets to file
   write.csv(tweets, file=paste("Downloads/", user, ".csv", sep=""), row.names=F)
   Sys.sleep(sleepTime)
}

【问题讨论】:

  • 您使用的一些示例代码会很棒。如果您使用某种循环,您可以查看Sys.sleep 在循环之间暂停,使其在下载限制内
  • 这个问题stackoverflow.com/questions/9192698/… 有一些相似之处。
  • 看看 Twitter 的 Streaming API docsthis question
  • 谢谢萨扬! Sys.sleep 是要走的路。是否可以优化请求之间的暂停时间?
  • 我对最佳睡眠时间的猜测是 3600/150 = 24 秒。如果请求本身以及写入 csv 的速度很慢,那么您可以system.time 并切断一些睡眠时间以进行补偿。

标签: r twitter


【解决方案1】:

根据 twitter API 文档,速率限制为每 15 分钟 180 或 300 个请求,具体取决于授权。因此,您应该将您的 sys.sleep 调整为这个数字。

https://dev.twitter.com/rest/reference/get/statuses/user_timeline

【讨论】:

    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多