htmlParse无法加载外部实体

时间:2014-05-02 14:28:17

标签: xml r

我尝试使用R和XML包加载一些公开的NHS数据,但我不断收到以下错误消息:

  

错误:无法加载外部实体" http://www.england.nhs.uk/statistics/statistical-work-areas/bed-availability-and-occupancy/"

尽管看了几个相关的问题,我似乎无法弄清楚可能导致这种情况的原因。

这是我非常简单的代码:

library("XML")
url <- "http://www.england.nhs.uk/statistics/statistical-work-areas/bed-availability-and-occupancy/"
doc <- htmlParse(url)

编辑:会话信息

  

R version 3.0.1(2013-05-16)平台:i386-w64-mingw32 / i386(32位)

     

locale:[1] LC_COLLATE = English_United Kingdom.1252   LC_CTYPE = English_United Kingdom.1252 [3] LC_MONETARY = English_United   Kingdom.1252 LC_NUMERIC = C [5]   LC_TIME = English_United Kingdom.1252

     

附加基础包:[1] stats graphics grDevices utils
  数据集方法基础

     

通过命名空间加载(而不是附加):[1] tools_3.0.1

2 个答案:

答案 0 :(得分:9)

包XML存在一些问题。问题是间歇性的,与URL无关。我使用httr包的函数GET解决了这个问题,以获取html代码,然后将其传递给htmlParse,见下文:

library("XML")
library(httr)
url <- "http://www.england.nhs.uk/statistics/statistical-work-areas/bed-availability-and-occupancy/"
doc <- htmlParse(rawToChar(GET(url)$content))

答案 1 :(得分:3)

您还可以使用public static <T> T copyAttributesFromTo(T value, T dataHolder) throws IllegalArgumentException, IllegalAccessException { if (value == null || dataHolder == null) { throw new IllegalArgumentException(); } final Field[] fields = value.getClass().getDeclaredFields(); for (Field field : fields) { if (!Modifier.isFinal(field.getModifiers())) { field.setAccessible(true); field.set(value, field.get(dataHolder)); } } return value; } &amp; rvest个包裹:

xml2