如何使用R从tweet_id检索多条tweet

如何使用R从tweet_id检索多条tweet,r,twitter,R,Twitter,我正在使用R中的twitteR包根据推文ID提取推文。 但我无法在不达到速率限制或错误404的情况下对多个tweet ID执行此操作。 这是因为我使用的是showStatus()——一次一个tweet id。 我正在寻找一个类似于getStatuses()的函数-多推id/请求 是否有有效的方法执行此操作。 我想在一个15分钟的窗口内使用outh只能提出60个请求 那么,我如何确保:- 1.为单个请求检索多个tweet ID,然后重复这些请求。 2.正在检查费率限制。 3.未找到推文的错误处理。

我正在使用R中的twitteR包根据推文ID提取推文。 但我无法在不达到速率限制或错误404的情况下对多个tweet ID执行此操作。 这是因为我使用的是showStatus()——一次一个tweet id。 我正在寻找一个类似于getStatuses()的函数-多推id/请求

是否有有效的方法执行此操作。 我想在一个15分钟的窗口内使用outh只能提出60个请求

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

注:此活动不是基于用户的


谢谢

我最近遇到了同样的问题。使用API提供的
lookup
-方法批量检索推文。这样,每个请求最多可以获得100条tweet

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

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)
}
设置一个较高的
retryonratefimit
可以确保您获得所有推文,即使您的ID向量有18000条以上()


与往常一样,您可以使用
twlistodf(tweets)

将tweets转换为数据帧。我最近遇到了同样的问题。使用API提供的
lookup
-方法批量检索推文。这样,每个请求最多可以获得100条tweet

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

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)
}
设置一个较高的
retryonratefimit
可以确保您获得所有推文,即使您的ID向量有18000条以上()


与往常一样,您可以使用
twlistodf(tweets)

将tweets转换为数据帧。我最近遇到了同样的问题。使用API提供的
lookup
-方法批量检索推文。这样,每个请求最多可以获得100条tweet

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

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)
}
设置一个较高的
retryonratefimit
可以确保您获得所有推文,即使您的ID向量有18000条以上()


与往常一样,您可以使用
twlistodf(tweets)

将tweets转换为数据帧。我最近遇到了同样的问题。使用API提供的
lookup
-方法批量检索推文。这样,每个请求最多可以获得100条tweet

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

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)
}
设置一个较高的
retryonratefimit
可以确保您获得所有推文,即使您的ID向量有18000条以上()


像往常一样,您可以使用
twlisttof(tweets)

将tweets转换为数据帧,我仍然对您想要什么感到困惑。但是,我一直在使用
streamR
。如果使用
filterStream
,您可以在指定的时间段内收集推文。如果需要,可以指定位置。一旦所有tweets都在,您就可以使用
parseTweets
,这将为您提供一个数据帧。您可以使用userID对数据进行子集划分。据推测,如果一个用户在一段时间内发了多次tweet,那么在数据帧中就会有多条tweet。我仍然有点不明白你想要什么。但是,我一直在使用
streamR
。如果使用
filterStream
,您可以在指定的时间段内收集推文。如果需要,可以指定位置。一旦所有tweets都在,您就可以使用
parseTweets
,这将为您提供一个数据帧。您可以使用userID对数据进行子集划分。据推测,如果一个用户在一段时间内发了多次tweet,那么在数据帧中就会有多条tweet。我仍然有点不明白你想要什么。但是,我一直在使用
streamR
。如果使用
filterStream
,您可以在指定的时间段内收集推文。如果需要,可以指定位置。一旦所有tweets都在,您就可以使用
parseTweets
,这将为您提供一个数据帧。您可以使用userID对数据进行子集划分。据推测,如果一个用户在一段时间内发了多次tweet,那么在数据帧中就会有多条tweet。我仍然有点不明白你想要什么。但是,我一直在使用
streamR
。如果使用
filterStream
,您可以在指定的时间段内收集推文。如果需要,可以指定位置。一旦所有tweets都在,您就可以使用
parseTweets
,这将为您提供一个数据帧。您可以使用userID对数据进行子集划分。假设,如果一个用户在一段时间内发了多次tweet,那么您在数据帧中有多条tweet。嗨,Dave,谢谢您提供此功能。。。它非常有用!嗨,戴夫,谢谢你的这个功能。。。它非常有用!嗨,戴夫,谢谢你的这个功能。。。它非常有用!嗨,戴夫,谢谢你的这个功能。。。它非常有用!