每5分钟获取一次Google趋势数据

时间:2019-06-22 04:34:52

标签: r gtrendsr

我想每小时通过包“ gtrendsR”提取Google趋势数据,我试图使用Sys.sleep()函数设置计时器,但是,我每小时都无法下载它。因此,如何纠正我的代码以便每小时获取一次数据。非常感谢!

Sys.setlocale("LC_ALL", "English")
Keywords = c("google", "twitter")

for (k in Keywords) {
  res = NULL

  temp_1 <- gtrends(k, geo = "US",time = "all")
  temp_2 <- temp_1$interest_over_time
  res <- rbind(res, temp_2)
  rm(temp_1,temp_2)

  res <- select (res, c(date, hits))

  Sys.setlocale(category = "LC_ALL", locale = "cht")
  names(res)[2]<- k
  xfilepath = paste("C:/Users/Peter/Desktop/",k,".csv",sep="")
  write.csv(res, file = xfilepath, row.names=FALSE)

}

1 个答案:

答案 0 :(得分:1)

Sys.sleep()应该可以正常工作,并且没有错误代码,很难准确地告诉您它为什么会失败。但是,我建议使用另一种方法。

later软件包是一个简单而实用的实用程序软件包,用于执行代码。它采用不带任何参数的函数,并在设置的延迟下运行它。例如,您可以使用:

library("gtrendsR")
library("later")
library("data.table") #for as.ITime
Sys.setlocale("LC_ALL", "English")
Keywords = c("google", "twitter")
#Set delay. Here for 5 seconds
delay <- as.ITime("00:00:05")
Interrupt <- FALSE

extractGoogle <- function(){
    for (k in Keywords) {
        res = NULL
        temp_1 <- gtrends(k, geo = "US",time = "all")
        temp_2 <- temp_1$interest_over_time
        res <- rbind(res, temp_2)
        rm(temp_1,temp_2)
        res <- select (res, c(date, hits))
        Sys.setlocale(category = "LC_ALL", locale = "cht")
        names(res)[2]<- k
        xfilepath = paste("C:/Users/Peter/Desktop/",k,".csv",sep="")
        write.csv(res, file = xfilepath, row.names=FALSE)
    }
    #Execute once again later
    if(isFALSE(Interrupt))
        later(extractGoogle, delay = delay)
}
#Run the function until Interrupt is set to TRUE or session closes
extractGoogle()

这使您可以手动设置延迟,将“延迟”更改为秒数。 as.ITime simple允许您以简单格式指定秒数。然后可以通过更改全局变量进一步延迟或破坏循环。