我有一个URL列表(足够大),我想检查他们的HTML代码是否有效。如果不是,我想知道错误和警告的数量,如本页的结果:http://validator.w3.org/如何用R验证HTML页面?
因此,通过RI想要将我的URL提交到该网页,然后解析结果以获取我需要的信息。还有另一种方法吗?
我找到了RCurl包,但我不确定该如何去做。我会感谢任何帮助。
在此先感谢。
编辑:
我尝试下面的代码,这似乎有种做的工作,虽然我还不能处理一些未知的原因,我得到一个错误,代码停止(因此我失去了一些网址一切)。
HTMLValid=foreach(i=1:nrow(allData), .combine='rbind') %dopar% {
library(RCurl)
library(XML)
url=paste("http://validator.w3.org/check?uri=",
as.character(allData$url[i]),
"&charset=%28detect+automatically%29&doctype=Inline&group=0#preparse_warnings",
sep="")
w = getURL(url,httpheader = c('User-Agent' = "Mozilla/5.0 (Windows NT 6.1; rv:23.0) Gecko/20100101 Firefox/23.0"))
doc <- htmlTreeParse(w, getDTD = F)
r=xmlRoot(doc)
text=r[["body"]][[2]][[4]][[1]][[1]][[2]][[1]]
errors=strsplit(toString.XMLNode(text),' ')[[1]][1]
warnings=strsplit(toString.XMLNode(text),' ')[[1]][3]
c(as.numeric(errors),as.numeric(warnings))
}
如果页面在特定的时间范围内没有响应,可能会出现错误。我该如何克服这一点?有没有办法更快地完成该过程?
您可以尝试'library(XML)'中的'xmlSchemaValidate'。 – Thomas
您可以指定foreach'.errorhandling ='remove''选项来过滤错误并仅返回成功的任务结果。通过这种方式,您可以在几项任务失败时避免失去一切。 –
@SteveWeston通过这种方式,我将无法识别出我没有得到结果的案例。或者,也许我可以在结果中附加迭代器! 托马斯我会试试看!谢谢!! – Stergios