我创建了一个循环,该循环遍历Twitter手柄的向量,并使用search_tweets包中的rtweet函数从其收集推文。

下载最新版本的rtweet

## install devtools package if it's not already
if (!requireNamespace("devtools", quietly = TRUE)) {
install.packages("devtools")
}

## install dev version of rtweet from github
devtools::install_github("mkearney/rtweet")

library(rtweet)

创建 token
## autheticate via web browser
token=create_token(
app = "My_app",
consumer_key = "My Consumer Key",
consumer_secret =
"My Secret Code",set_renv = FALSE)

这是我的Twitter句柄,存储在矢量中
twitter_handles=c("@realDonaldTrump","@HillaryClinton","@MittRomney")

然后,我遍历这些句柄,并将每个句柄的结果存储为唯一的数据帧
#Loop through the twitter handles & store the results as individual dataframes
for(handle in twitter_handles) {

  result <- search_tweets(handle, n = 3500 , include_rts = FALSE,retryonratelimit = TRUE)

if(length(result) != 0){

  result$`Twitter Handle` <- handle
  result$Source <- "Search"

  df_name <- paste(tolower(substring(handle, 2)),"_search")

  if(exists(df_name)) {
    assign(df_name, unique(rbind(get(df_name), result)))
  } else {
    assign(df_name, result)
  }
  }

  }

但是,当我这样做时,我收到一条错误消息



但是我不认为这是身份验证问题,因为当我尝试使用随机关键字/标签时,会得到结果
data <- search_tweets("#rstats", n = 10, include_rts = FALSE,token = token)

我的循环工作正常,但最近它开始引发错误。
关于为什么发生这种情况以及是否有解决办法的任何想法?

非常感谢您的帮助!

最佳答案

关于第一个错误:



通常,如果您使用的是较旧版本的rtweet,则会遇到此错误。

为什么?

Twitter更新其API时,有时会更改API GET请求的结构。每次发生这种情况时,rtweet必须重新格式化其请求,要求您使用最新版本的rtweet保持与Twitter API的连接。有趣的是,由于对Twitter API的那些调用未更改,因此某些API调用仍将成功。

@ TwitterCommunity.com引用了您遇到的错误。

获取最新版本的rtweet

要获取最新版本的rtweet,可以使用devtools软件包(安装后)。

## install devtools package if it's not already
if (!requireNamespace("devtools", quietly = TRUE)) {
  install.packages("devtools")
}

## install dev version of rtweet from github
devtools::install_github("mkearney/rtweet")

## load rtweet package
library(rtweet)

相关错误



查找跟踪错误的一个好地方是github上rtweet软件包的Github软件包跟踪列表。
  • https://github.com/mkearney/rtweet/issues/109

  • 代币安全

    这是一个旁白,但我的感觉是,您可能还希望在没有API key 的情况下共享完整的代码。您可以使用~/.Reviron在R中执行此操作。
    # Reload .Renviron
    # Do this to capture any edits to Environment variables
    readRenviron("~/.Renviron")
    
    # Generate a token
    token <- create_token(
      app = "rtweet_51672443_test_application",
      consumer_key = Sys.getenv("RTWEET_CONSUMER_KEY"),
      consumer_secret = Sys.getenv("RTWEET_CONSUMER_SECRET_KEY")
    )
    

    .Renviron包含:
    RTWEET_CONSUMER_KEY="<Insert Consumer Key obtained from Titter>"
    RTWEET_CONSUMER_SECRET_KEY="<Insert Consumer Secret Key obtained from Titter>"
    

    希望以上内容能为您指明正确的方向。

    09-05 01:52