繁体   English   中英

使用XML包中的readHTMLtable来搜索站点,不确定的错误消息

[英]Using readHTMLtable from XML package to scrape site, uncertain error message

我正在使用XML包来抓取网站列表。 具体来说,我正在以下网站上的候选人名单中评分: votmart

候选人的页面按数字顺序排列,从1开始。 我的第一次尝试,刮掉前50名候选人,看起来像这样

library(xml)
library(plyr)

url <- paste("http://www.votesmart.org/candidate/evaluations/", 1:50 , sep = "")
res <- llply(url, function(i) readHTMLtable(i))

但是有两个问题-例如,此序列中的第25 页会产生404 "url not found"错误。 我已经通过首先获取序列中每个页面的XML错误计数的数据帧,然后排除具有单个错误的页面来解决此问题。 特别

errors <- ldply(url, function(i) length(getXMLErrors(i)))
url2 <- url[which(errors$V1 > 1)]
res2 <- llply(url2, function(i) readHTMLTable(i))

这样,我就从这个列表中排除了404生成的URL。

但是,仍然存在由列表中的许多页面引起的问题,这导致此llply命令失败。 以下是一个例子

readHTMLTable("http://www.votesmart.org/candidate/evaluations/6")

这会导致错误

Error in seq.default(length = max(numEls)) : 
  length must be non-negative number
In addition: Warning message:
In max(numEls) : no non-missing arguments to max; returning -Inf

但是,这些页面从getXMLErrors命令生成的错误计数与工作页面相同,因此在此方面我无法区分它们。

我的问题是-此错误是什么意思,有什么办法让readHTMLTable返回这些页面的空列表,而不是错误? 失败了,有没有办法我的llply语句可以检查这些页面并跳过那些导致错误的页面?

为什么不只是一些简单的错误处理?

res <- llply(url, function(i) try(readHTMLTable(i)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM