我一直在使用 RStudio 来抓取一些网站。我希望能够在白天的特定实例中自动运行我的代码。我一直在使用 Rcrawler 和 Rvest 进行爬行。
重点是在一天中的不同时间使用不同的关键字从多个站点进行新闻聚合。我正在尝试自动化运行特定脚本的过程。
有没有办法在 R 中这样做,或者我应该转向 Python 吗?我在 Windows 上使用 Rstudio。
我一直在使用 RStudio 来抓取一些网站。我希望能够在白天的特定实例中自动运行我的代码。我一直在使用 Rcrawler 和 Rvest 进行爬行。
重点是在一天中的不同时间使用不同的关键字从多个站点进行新闻聚合。我正在尝试自动化运行特定脚本的过程。
有没有办法在 R 中这样做,或者我应该转向 Python 吗?我在 Windows 上使用 Rstudio。
你没有提到你的操作系统,但如果你在 Linux / Unix 上,那么看看 Cron。有一个名为 CronR 的 r 包,它允许您安排在特定时间或间隔(每小时、每天等)运行脚本。还有一个用于 CronR GUI 的 Rcommander 插件。
你需要在Linux中安装并启动cron服务(即使用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()
继续添加到输出的最佳方法是使用类似 write table with append = TRUE
write.table(df, "Scrape.csv", sep = ",", col.names = F, append = T)
该作业将一直运行,直到您选择结束它,它所做的只是执行整个 r 脚本,因此您对 .csv 等的所有写入都需要在该脚本中。
有一种简单的方法可以做到这一点,但我不确定它是否正确。使用循环并在后台运行脚本。
while(1){
tnow<-format(Sys.time(),'%H:%M')
tschedule<-'18:00'
while(tnow<tschedule){
Sys.sleep(60)
}
# Your code here
}
启动条件可以根据需要修改,但是可以看思路