【发布时间】: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 docs 和 this question。
-
谢谢萨扬! Sys.sleep 是要走的路。是否可以优化请求之间的暂停时间?
-
我对最佳睡眠时间的猜测是 3600/150 = 24 秒。如果请求本身以及写入 csv 的速度很慢,那么您可以
system.time并切断一些睡眠时间以进行补偿。