假设我有一个网站,不时检查一下,看看它是否正常工作,我想借助R进行编码。
例如,我可能每小时进行一次以下操作,以检查它是否显示404 Not Found错误。
library(httr)
r <- GET("http://httpbin.org/status/404")
http_error(r)
[1] TRUE
status_code(r)
[1] 404
但是我的网页使用Google地图,有时我检测到以下错误:
此页面未正确加载Google地图。
有没有人知道如何以与上述相同的方式浏览网页而不检测网页的错误?
答案 0 :(得分:0)
您需要两个脚本。下面给出的第一个选项进行检查,如果此页面未正确加载Google Maps。,则使用通知程序包打印错误消息。有关RSelenium的基础知识,请查阅https://cran.r-project.org/web/packages/RSelenium/vignettes/basics.html。 这里说有三种运行Selenium Server的方法。我选择了easist,第二个是rsDriver。
# To get the message written I use the notifier package,
# https://github.com/gaborcsardi/notifier
library(notifier)
# To do the webscraping I use RSelenium
library(RSelenium)
# To check whether the string contains what I am after I prefer stringr
library(stringr)
rD <- rsDriver(verbose = FALSE)
remDr <- rD$client
remDr$navigate("https:...")
# Wait a little while it is busy with downloading everything
Sys.sleep(120)
# we scrape it and convert it to a character string
a <- XML::htmlParse(remDr$getPageSource()[[1]])
b <- as(a, "character")
# we check if the string has the error phrase.
result <- str_detect(b, "This page can't load Google Maps correctly")
# if yes, then the following error message is printed.
if (result == TRUE){notify(title = "ERROR",
msg = sprintf("This page can't load Google Maps correctly"))}
# to close the client and the server
remDr$close()
rD$server$stop()
以下是第二个脚本,它使用taskcheduler软件包在R本身的特定时间点进行了自动化。在这种情况下,代码每5分钟执行一次。
library(taskscheduleR)
myscript <- "the place of the first script"
taskscheduler_create(taskname = "myfancyscript_5min", rscript = myscript,
schedule = "MINUTE", starttime = "09:10", modifier = 5)