首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用R从tweet_id中检索多个tweet

如何使用R从tweet_id中检索多个tweet
EN

Stack Overflow用户
提问于 2014-10-30 05:24:16
回答 1查看 3.1K关注 0票数 0

我使用R中的twitteR包来提取基于ids的tweet。但是,对于多个tweet I,我无法做到这一点,而不触及速率限制或错误404。这是因为我使用的是showStatus() --一次只使用一个tweet id。我正在寻找一个类似于getStatuses()的函数-多个tweet id/

是执行此操作的一种有效方法。--我想,在15分钟的窗口中,使用只能发出60个请求。

那么,我如何确保:- 1.检索单个请求的多个tweet is,然后重复这些请求。2。速率限制正在检查中。3。未找到tweet的错误处理。

P.S :这个活动不是基于用户的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-30 09:55:50

我最近也遇到过同样的问题。为了批量检索tweet,推特建议使用其API提供的lookup-method。这样,每个请求最多可以获得100条推特。

不幸的是,这还没有在twitteR包中实现;因此,我尝试将一个快速函数(通过重用来自twitteR包的大量代码)来使用该API方法:

代码语言:javascript
代码运行次数:0
运行
复制
lookupStatus <- function (ids, ...){
  lapply(ids, twitteR:::check_id)

  batches <- split(ids, ceiling(seq_along(ids)/100))

  results <- lapply(batches, function(batch) {
    params <- parseIDs(batch)
    statuses <- twitteR:::twInterfaceObj$doAPICall(paste("statuses", "lookup", 
                                                         sep = "/"),
                                                   params = params, ...)
    twitteR:::import_statuses(statuses)
  })
  return(unlist(results))
}

parseIDs <- function(ids){
  id_list <- list()
  if (length(ids) > 0) {
    id_list$id <- paste(ids, collapse = ",")
  }
  return(id_list)
}

确保您的ids向量属于character类(否则,很大的ID会出现一些问题)。

使用这样的函数:

代码语言:javascript
代码运行次数:0
运行
复制
ids <- c("432656548536401920", "332526548546401821")
tweets <- lookupStatus(ids, retryOnRateLimit=100)

设置一个较高的retryOnRateLimit可以确保您获得所有的tweet,即使您的if向量有超过18,000个条目(每个请求100个ID,每15分钟窗口180个请求)。

与往常一样,您可以使用twListToDF(tweets)将tweet转换为数据框架。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26645672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档