使用readHTMLTable出现R错误

8
我正在使用以下代码:
url  = "http://finance.yahoo.com/q/op?s=DIA&m=2013-07"

library(XML)
tabs = readHTMLTable(url, stringsAsFactors = F)

I get the following error:

Error: failed to load external entity "http://finance.yahoo.com/q/op?s=DIA&m=2013-07"

当我在浏览器中使用该URL时,它可以正常工作。那么,我在这里做错了什么呢?

谢谢。


你的代码对我来说运行良好。 - Thomas
这对我也有效。根据http://stackoverflow.com/questions/14629026/r-readhtmltable-error-failed-to-load-external-entity,这似乎可能与您的互联网连接有关。您能在浏览器中加载页面吗? - SchaunW
是的,我能够在浏览器中正常加载页面。因此,我认为我的互联网连接没有问题。 - Zanam
你能否运行 library(RCurl); tabs = getURL(url) 而不触发错误? - SchaunW
代理设置 尝试这里的方法https://dev59.com/k2w15IYBdhLWcg3wqNkB,可能会对您有所帮助。 - user2982707
2个回答

16

很难确定问题的原因,因为我无法复制您的错误。但是根据该软件包的作者(请参见http://comments.gmane.org/gmane.comp.lang.r.mac/2284),XML获取Web内容的方法相当简单。解决方法是使用RCurl获取内容并使用XML进行解析:

library(XML)
library(RCurl)

url <- "http://finance.yahoo.com/q/op?s=DIA&m=2013-07"

tabs <- getURL(url)
tabs <- readHTMLTable(tabs, stringsAsFactors = F)

或者,如果RCurl仍然报错,尝试使用 httr 包:

library(httr)

tabs <- GET(url)
tabs <- readHTMLTable(rawToChar(tabs$content), stringsAsFactors = F)

非常好的回复。感谢您抽出时间。 - Michael Davidson

0

我刚刚遇到了与上述相同的错误“failed to load external entity”,当使用以下代码时: url <- "http://www.cisco.com/c/en/us/products/a-to-z-series-index.html" doc <- htmlTreeParse(url, useInternal=TRUE)

我在这个主题上找到了这篇文章和另一篇文章,但没有解决我的问题。这段代码以前能够正常工作。后来我意识到我是在公司的VPN上。我退出VPN并再次尝试,结果成功了。所以,在VPN上可能是导致你遇到上述错误的另一个原因。退出VPN就可以解决这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接