1
我正在使用R来抓取约1,000个URL的列表。剧本经常以不可复制的方式失败;当我重新运行它时,它可能会成功,或者可能会在另一个URL中失败。这使我相信,问题可能是由于我的互联网连接暂时丢失或服务器的URL出现短暂错误导致的。在R中处理气质错误
如何设计我的R代码以在遇到错误时继续到下一个URL?我试过使用try
函数,但似乎不适用于这种情况。
library(XML)
df <- data.frame(URL=c("http://www.google.com/", "http://www.ask.com/", "http://www.bing.com/"))
for (i in 1:nrow(df)) {
URL <- df$URL[i]
# Exception handling
Test <- try(htmlTreeParse(URL, useInternalNodes = TRUE), silent = TRUE)
if(inherits(Test, "try-error")) next
HTML <- htmlTreeParse(URL, useInternalNodes = TRUE)
Result <- xpathSApply(HTML, "//li", xmlValue)
print(URL)
print(Result[1])
}
我们假设被刮掉的URL是在这个步骤访问:
Test <- try(htmlTreeParse(URL, useInternalNodes = TRUE), silent = TRUE)
if(inherits(Test, "try-error")) next
但随后的URL停止工作,只是这一步之前:
HTML <- htmlTreeParse(URL, useInternalNodes = TRUE)
然后htmlTreeParse
韩元” t工作,R会发出警告/错误,并且我的for
循环将会中断。我想让for
循环继续到下一个被刮掉的URL - 我该如何完成这个?
感谢
是的,这似乎工作,太棒了!谢谢 – Rez99