使用XML包中的readHTMLtable清除站点,不确定错误消息
我正在使用使用XML包中的readHTMLtable清除站点,不确定错误消息,r,R,我正在使用XML包来收集网站列表。具体来说,我从以下站点的候选人列表中获取评分: 候选人的页面按数字顺序排列,从1开始向上排列。我的第一次尝试,即从前50名候选人中脱颖而出,看起来是这样的 library(xml) library(plyr) url <- paste("http://www.votesmart.org/candidate/evaluations/", 1:50 , sep = "") res <- llply(url, function(i) readHTMLta
XML
包来收集网站列表。具体来说,我从以下站点的候选人列表中获取评分:
候选人的页面按数字顺序排列,从1开始向上排列。我的第一次尝试,即从前50名候选人中脱颖而出,看起来是这样的
library(xml)
library(plyr)
url <- paste("http://www.votesmart.org/candidate/evaluations/", 1:50 , sep = "")
res <- llply(url, 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)))
res我使用了plyr的try_default,对这种方法的效果印象深刻。我以前从未见过尝试,但这似乎是一个非常优雅的解决我的问题的方法,谢谢!
res <- llply(url, function(i) try(readHTMLTable(i)))