代码之家  ›  专栏  ›  技术社区  ›  Varun

R在Twitter句柄的向量上循环搜索tweets函数(rtweet包)时发生身份验证错误

  •  7
  • Varun  · 技术社区  · 6 年前

    我已经创建了一个循环,它通过一个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)
    

    创建令牌

    ## 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)
      }
      }
    
      }
    

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

    警告:32-无法对您进行身份验证。 vector(“list”,ntimes)中的错误:“length”参数无效

    不过,我不认为这是一个身份验证问题,因为当我尝试使用随机关键字/标签时,会得到结果

    data <- search_tweets("#rstats", n = 10, include_rts = FALSE,token = token)
    

    我的循环运行良好,但最近它开始抛出错误。 有什么办法知道为什么会发生这种情况,有没有解决办法?

    非常感谢您的帮助!

    1 回复  |  直到 6 年前
        1
  •  3
  •   Technophobe01    6 年前

    第一个错误:

    “警告:32-无法验证您的身份。矢量错误(“list”, ntimes):无效的“length”参数“

    通常,如果使用旧版本的 rtweet .

    为什么?

    当Twitter更新API时,它们有时会更改API GET请求的结构。 rtweet公司 每次发生这种情况时都必须重新格式化他们的请求,要求您使用 rtweet公司 保持与Twitter API的连接。有趣的是,一些API调用仍然会成功,因为那些对twitterapi的调用没有改变。

    引用了您遇到的错误@ 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)
    

    相关错误

    向量错误(“list”,n.times):中的“length”参数无效 附加:警告消息:超出速率限制。

    查找跟踪错误的一个好地方是Github上rtweet包的Github包跟踪列表。

    令牌安全

    这是一个旁白,但我的感觉是,你可能还想分享你的完整代码没有你的API密钥。你可以在R中使用 ~/.Reviron .

    # 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>"
    

    我希望以上能帮你指出正确的方向。

    推荐文章