2013-06-11 4 views
5

Я использую следующий код:R Ошибка при помощи readHTMLTable

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

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

Я получаю следующее сообщение об ошибке:

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

Когда я использую URL в браузере он прекрасно работает. Итак, что я делаю здесь неправильно?

Благодаря

+0

Ваш код отлично подходит для меня. – Thomas

+0

Это работает и для меня. Основываясь на http://stackoverflow.com/questions/14629026/r-readhtmltable-error-failed-to-load-external-entity, похоже, что это может быть проблемой для вашего интернет-соединения. Вы можете загрузить страницу в браузере? – SchaunW

+0

Да, я могу загрузить страницу в браузере. Итак, мое подключение к Интернету в порядке, я полагаю. – Zanam

ответ

11

Трудно знать наверняка, так как я не могу повторить свою ошибку, но по автору В пакете (см http://comments.gmane.org/gmane.comp.lang.r.mac/2284), методы XML для получения веб-контента довольно минималистично. Обойти это можно использовать 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) 
+0

Отличный ответ. Спасибо, что нашли время. –

0

Я только что получил ту же ошибку как указано выше, "не удалось загрузить внешний объект" при использовании URL < - "http://www.cisco.com/c/en/us/products/a-to-z-series-index.html" док < - htmlTreeParse (URL, useInternal = TRUE)

Я наткнулся на это и еще одно сообщение на эту тему, которое не решило мою проблему. Этот код работал раньше. Затем я понял, что я нахожусь в корпоративной VPN. Я вышел из VPN и снова попытался, и это сработало. Таким образом, включение в VPN может быть еще одной причиной, по которой вы получили бы вышеуказанную ошибку. Выход из VPN решает его.

Смежные вопросы