![](/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.