Как сделать мой гусеничный (сделано в R) автоматическим? - PullRequest
0 голосов
/ 26 июня 2018

Я работал над RStudio, чтобы сканировать некоторые сайты.Я хотел, чтобы мой код мог запускаться автоматически в определенных случаях в течение дня.Я использовал Rcrawler и Rvest для сканирования.

Смысл в том, чтобы агрегировать новости с нескольких сайтов, используя разные ключевые слова в разное время в течение дня.Я пытаюсь автоматизировать процесс запуска конкретного скрипта.

Есть ли способ сделать это в R или я должен перейти на Python для того же?Я использую Rstudio на Windows.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы не упомянули свою ОС, но если вы работаете в Linux / Unix, посмотрите на Cron.Существует пакет r, называемый CronR, который позволяет планировать запуск сценария в определенное время или через определенные промежутки времени (ежечасно, ежедневно и т. Д.). Также имеется плагин Rcommander для графического интерфейса CronR.

Вам необходимо установить и запустить службу cron в Linux (т. Е. С помощью apt-get)

Затем вы можете написать сценарий R для планирования задания;

library(cronR)
cmd <- cron_rscript("/home/job.R") #, log_append = TRUE)
cmd
cron_add(command = cmd, frequency = 'hourly', id = 'Scrape', description = 'Webscrape')
cron_njobs()

Лучший способ продолжить добавление к выводу - использовать что-то вроде таблицы записи с append = TRUE

write.table(df, "Scrape.csv", sep = ",", col.names = F, append = T)

Задание будет выполняться до тех пор, пока вы не решите его завершить, всеон выполняет весь скрипт r, поэтому все ваши записи в .csv и т. д. должны быть в этом скрипте.

0 голосов
/ 26 июня 2018

Есть простой способ сделать это, хотя я не уверен, что это правильный путь.Используйте цикл и запустите сценарий в фоновом режиме.

while(1){
  tnow<-format(Sys.time(),'%H:%M')
  tschedule<-'18:00'
  while(tnow<tschedule){
    Sys.sleep(60)
  }
  # Your code here
}

Условие запуска можно изменить при необходимости, но вы можете увидеть идею

...