Каждые 5 минут получать данные о тенденциях Google - PullRequest
1 голос
/ 22 июня 2019

Я хотел бы извлекать данные трендов Google через пакет "gtrendsR" каждый час, я пытался использовать функцию 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 Ответ

1 голос
/ 22 июня 2019

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 позволяет указать количество секунд в простом формате.Затем цикл можно отложить дальше или прервать, изменив глобальные переменные.

...