我一直在使用r的twitteR软件包来下载推文并从中创建数据框。但是我已经很快地进入了速率限制,比我预期的要快得多,基于这里发布的速率限制:https://dev.twitter.com/rest/reference/get/statuses/user_timeline
以下是我一直在使用的代码:
library(RColorBrewer)
library(NLP)
library(twitteR)
library(foreign)
library(wordcloud)
library(tm)
library(base64enc)
library(httr)
library(caTools)
library(rpart)
library(rpart.plot)
library(plyr)
access_token<-"[omitted]"
access_secret<-"[omitted]"
consumer_key<-"[omitted]"
consumer_secret<-"[omitted]"
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)
user.tweets<-userTimeline("@RealDonaldTrump", n=3200, includeRts=T)
master<-twListToDF(user.tweets)
在达到15分钟窗口的速率限制之前,我只能在五个不同的用户上运行此代码。当我使用
getCurRateLimitInfo()
我可以看到每次抓取用户的推文时,我都会使用32个单位来达到我的速率限制。任何人都可以解释为什么会这样吗?我现在最好的猜测是,我抓住的每组100条推文都计入一个单位,但是如果是这样的话,为什么不在速率限制文件中指定?
我正在尝试从数百个用户那里获取推文,因此每次达到速率限制时,此代码运行所需的时间都会增加吨。我开发了一个使用Sys.sleep()来避免超过速率限制的循环,但是仍然需要花费大量时间来完成我正在抓取的每个用户。