使用TwitteR随机抽取一段时间段的推文

时间:2017-01-15 21:03:01

标签: r twitter

对于两天时间段的给定主题标签,我需要尽可能多的推文。问题是它们中有太多(猜测〜1百万)只能使用时间段规范进行提取:

  1. 如果我指定retryOnRateLimit = 120
  2. ,肯定会花很多时间
  3. 如果我不这样做,我会很快被阻止,并且只会在半天内发送推文
  4. 对我来说,明显的答案是通过给定的参数提取随机样本,但我无法弄清楚如何去做。

    我的代码在这里:

    a = searchTwitteR('hashtag', since="2017-01-13", n = 1000000, resultType = "mixed", retryOnRateLimit = 10)
    

    最后一次尝试停止了17,5千条推文,其中只包括12小时

    P.S。提取转推可能有用,但我仍然不知道如何在searchTwitteR()中指定转推。

1 个答案:

答案 0 :(得分:2)

弃用twitteR包以支持rtweet package。如果我是你,我会使用rtweet来获取这些推文的最后一条。

从技术上讲,您可以使用rtweet包中的search_tweets()直接指定100万。不过,我建议将其分解成碎片,因为收集200000条推文需要几个小时。

library(rtweet)
maxid <- NULL
rt <- vector("list", 5)
for (i in seq_len(5)) {
    rt[[i]] <- search_tweets("hashtag", n = 200000, 
                             retyonratelimit = TRUE,
                             max_id = maxid)
    maxid <- rt[[i]]$status_id[nrow(rt[[i]])]
}
## extract users data and combine into data frame
users <- do.call("rbind", users_data(rt))
## collapse tweets data into data frame
rt <- do.call("rbind", rt)
## add users data as attribute
attr(rt, "users") <- users
## preview data
head(rt)
## preview users data (rtweet exports magrittr's `%>%` pipe operator)
users_data(rt) %>% head()