0

我正在尝试使用以下代码提取关键字的 twitter 数据:

cred<- OAuthFactory$new(consumerKey='XXXX', consumerSecret='XXXX',
                        requestURL='https://api.twitter.com/oauth/request_token',
                        accessURL='https://api.twitter.com/oauth/access_token',
                        authURL='https://api.twitter.com/oauth/authorize')

cred$handshake(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))

要启用连接,请将您的网络浏览器指向: https ://api.twitter.com/oauth/authorize?oauth_token=Cwr7GgWIdjh9pZCmaJcLq6CG1zIqk4JsID8Q7v1s 完成后,记录给您的 PIN 并在此处提供:8387466

registerTwitterOAuth(cred)
search=searchTwitter('facebook',cainfo="cacert.pem",n=1000)

但是即使 n=1000,该函数也会返回一个仅包含 99 条推文的列表,而它应该不止这些。我还尝试了具有特定时间线的相同功能:

search=searchTwitter('facebook',cainfo="cacert.pem",n=1000,since='2013-01-01',until='2014-04-01')

但是这个函数返回一个空列表。

任何人都可以通过正确的附加查询集帮助我,以便我可以从特定时间线提取数据并且对推文数量没有任何限制吗?它与 API 获取的数据量有什么关系吗?

提前致谢

4

1 回答 1

0

看起来 Twitter API 限制了返回推文的数量。您应该在 API 文档中查看这一点。牢记限制,您可以在循环中使用 searchTwitter()的sincesinceID参数,例如:

for (i in 1:20) {
  if (i==1) search = searchTwitter('facebook',cainfo="cacert.pem",n=2, since='2014-04-15')
  else search = searchTwitter('facebook',cainfo="cacert.pem",n=2, since='2014-04-15', sinceID=search[[1]]$id)
  print(search)
  Sys.sleep(10)
}

如果您遇到 API 限制,您可能需要调整 Sys.sleep(10) 部分。

于 2014-04-18T05:30:53.723 回答