使用Twitter API和
我一直收到以下错误:
错误代码似乎提示需要"更新限制"。 但是用户查找速率限制为180,每批次查找100个用户名。 因此,多达18,000个用户不应该是问题。但即使将数量减少到6000(以尊重通过应用程序认证的请求限制)每15分钟时间窗口仍会导致相同的错误。
这里是一个MWE(但您需要自己的API密钥):
有时手动查找较小的子集,例如通过
twitteR
包,我正在尝试检索一长串名称(在50,000到100,000之间)的用户对象。我一直收到以下错误:
Error in twInterfaceObj$doAPICall(paste("users", "lookup", sep = "/"), :
client error: (403) Forbidden
错误代码似乎提示需要"更新限制"。 但是用户查找速率限制为180,每批次查找100个用户名。 因此,多达18,000个用户不应该是问题。但即使将数量减少到6000(以尊重通过应用程序认证的请求限制)每15分钟时间窗口仍会导致相同的错误。
这里是一个MWE(但您需要自己的API密钥):
library(plyr)
# install the latest versions from github:
# devtools::install_github("twitteR", username="geoffjentry")
# devtools::install_github("hadley/httr")
library(twitteR)
library(httr)
source("TwitterKeys.R") # Your own API-Keys
setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessSecret)
# The following is just to generate a large enough list of user names:
searchTerms <- c("worldcup", "economy", "climate", "wimbledon",
"apple", "android", "news", "politics")
# This might take a while
sample <- llply(searchTerms, function(term) {
tweets <- twListToDF(searchTwitter(term, n=3200))
users <- unique(tweets$screenName)
return(users)
})
userNames <- unique(unlist(sample))
# This function is supposed to perform the lookups in batches
# and mind the rate limit:
getUserObjects <- function(users) {
groups <- split(users, ceiling(seq_along(users)/6000))
userObjects <- ldply(groups, function(group) {
objects <- lookupUsers(group)
out <- twListToDF(objects)
print("Waiting for 15 Minutes...")
Sys.sleep(900)
return(out)
})
return(userObjects)
}
# Putting it into action:
userObjects <- getUserObjects(userNames)
有时手动查找较小的子集,例如通过
lookupUsers(userNames[1:3000])
进行查找,可以工作;但是当我尝试自动化这个过程时,就会出现错误。有人知道可能的原因吗?