У меня есть список URL (достаточно большой), и я хочу проверить, действительно ли их код HTML. Если это не так, я хочу знать количество ошибок и предупреждений, таких как результаты этой страницы: http://validator.w3.org/Как проверить HTML-страницы с помощью R?
Таким образом, через RI необходимо отправить мои URL-адреса на эту веб-страницу, а затем проанализировать результаты, чтобы получить необходимую мне информацию. , Есть ли другой способ сделать это?
Я нашел пакет RCurl, но я не уверен, как это сделать. Буду признателен за любую помощь.
Заранее спасибо.
Edit:
Я попытался следующий код, который, кажется, своего рода сделать работу, хотя я до сих пор не может обрабатывать несколько URL-адресов для какой-то неизвестной причине, по которой я получаю сообщение об ошибке и код останавливается (поэтому я теряю все).
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))
}
Возможно, я получаю ошибки, когда страница не отвечает в течение определенного периода времени. Как я могу это преодолеть? Есть ли способ сделать процедуру быстрее?
Вы можете попробовать 'xmlSchemaValidate' из' library (XML) '. – Thomas
Вы можете указать опцию foreach '.errorhandling = 'remove'', чтобы отфильтровать ошибки и только вернуть результаты задачи, которые преуспели. Таким образом, вы избегаете потери всего, когда несколько задач терпят неудачу. –
@SteveWeston Таким образом, я не смогу идентифицировать случаи, для которых я не получил результаты. Или, может быть, я мог бы добавить итератор в результаты! Томас, я попробую! Благодаря!! – Stergios