【问题标题】:Parsing small web page with xml2 throws XML_PARSE_HUGE error使用 xml2 解析小网页会引发 XML_PARSE_HUGE 错误
【发布时间】:2016-02-22 11:50:33
【问题描述】:

最近在 R 中使用我的 rNOMADS 包的用户开始遇到意外错误:

Error: Excessive depth in document: 256 use XML_PARSE_HUGE option [1]

我们将问题追溯到这个命令:

html.tmp <- xml2::read_html("http://nomads.ncep.noaa.gov/cgi-bin/filter_rap.pl?dir=%2Frap.20151120")

点击链接后,似乎要解析的网页不大于其他正常工作的网页,并且远小于需要 XML_PARSE_HUGE 选项的 1 兆字节限制。此外,

xml2::read_html

实际上并没有 XML_PARSE_HUGE 选项。 here 描述的唯一其他潜在解决方案不适用于官方 R 包。

这个错误的原因是什么,是否可以在不求助于官方 CRAN 存储库之外的解决方案的情况下解决它?

【问题讨论】:

  • 是的,我知道。这种行为真的很难理解。我一直使用 GFS 模型,从来没有遇到过这个问题。
  • XML_PARSE_HUGE 解除了一些限制。您在这里遇到的是文档树的最大深度,默认情况下限制为 256。不需要超过 256 个嵌套元素的大型文档。
  • @nwellnhof 这个选项是怎么设置的?函数 read_html 没有它作为输入,我不清楚如何改变它。谢谢。

标签: r xml-parsing web-scraping libxml2


【解决方案1】:

到目前为止,我能做的最好的事情是安装shabbychef 的 xml2 分叉版本,它强制使用 XML_PARSE_HUGE。您可以通过

安装此版本的 xml2
library(drat)
drat:::add("shabbychef")
install.packages('xml2')

如果您在 rNOMADS 中遇到 XML_PARSE_HUGE 错误,请暂时使用此解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多