如何使用rtweet软件包在过去7天内收集推文?

时间:2018-06-30 03:35:33

标签: r twitter rtweet

我已经开始使用rtweet软件包,到目前为止,我的查询,语言和地理编码参数都取得了不错的结果。但是,我仍然不知道如何在过去7天内收集Twitter数据。

例如,在下一个代码块中,我想提取7天的一些数据,但是我不确定收集的推文是否会从2017-06-29开始直到2017-06-05,或者是否是从2017- 06-22到2017-06-29:

流所有提及AMLO或lopezobrador的推文7天

stream_tweets("AMLO,lopezobrador",
          timeout = 60*60*24*7,
          file_name = "tweetsaboutAMLO.json",
          parse = FALSE)

将数据读入整齐的tbl数据帧

AMLO <- parse_stream("tweetsaboutAMLO.json")

您知道rtweet中是否有任何命令指定使用search_tweets()或stream_tweets()函数时要使用的时间范围?

2 个答案:

答案 0 :(得分:1)

因此,要回答有关gow的问题以更有效地编写它,可以尝试使用for循环或应用列表。这里显示了for循环。

首先,创建一个包含您要拨打的4个日期的列表。

fechas <- seq.Date(from = as.Date("2018-06-24"), to = as.Date("2018-06-27"), by =  1)

然后创建一个空的data.frame以存储您的推文。

df_tweets <- data.frame()

现在,遍历您的列表并填充空的data.frame。

for (i in seq_along(fechas)) {
 df_temp <-  search_tweets("lang:es",
                        geocode = mexico_coord,
                        until= fechas[i],
                        n = 100)
 df_tweets <- rbind(df_tweets, df_temp)
}

summary(df_tweets)

另一方面,以下解决方案可能更方便,更有效:

library(tidyverse)
f_tweets2 <- search_tweets("lang:es",
                         geocode = mexico_coord,
                         until= "2018-06-29", ## or latest date                            
                        n = 10000)
df_tweets2 %>% 
  group_by(as.Date(created_at)) %>%  ## Group (or set apart) the tweets by date of creation
  sample_n(100)   ## Obtain 100 random tweets for each group, in this case, for each date.

答案 1 :(得分:0)

过去7天内,我已经找到了收集推文的we。但是,它效率不高。

rt_24 <- search_tweets("lang:es", 
                       geocode = mexico_coord, 
                       until="2018-06-24",
                       n = 100)

rt_25 <- search_tweets("lang:es",
                       geocode = mexico_coord,
                       until="2018-06-25",
                       n = 100)

rt_26 <- search_tweets("lang:es",
                       geocode = mexico_coord,
                       until="2018-06-26",
                       n = 100)

rt_27 <- search_tweets("lang:es",
                       geocode = mexico_coord,
                       until="2018-06-27",
                       n = 100)

然后,附加数据框

rbind(rt_24,rt_25,rt_26,rt_27)

您知道是否有更有效的方式编写此代码?也许结合使用max_id()函数和直到?