![](/img/trans.png)
[英]How to webscrape secured pages in R (https links) (using readHTMLTable from XML package)?
[英]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.