html - 文档深度过大:R 中 xml2::read_html() 的 XML_PARSE_HUGE 选项

标签 html r xml web-scraping rselenium

首先,我想为一个新问题道歉,因为我的个人资料还不允许我评论其他人的评论,尤其是我看到的两个 SO 帖子。所以请忍受这个老家伙:-)

我正在尝试读取一个包含 100 个字符的文件列表,文件大小从 90KB 到 2MB 不等,然后使用 qdap包对我从文件中提取的文本进行一些统计,即计数句子、单词等。这些文件包含以前使用 RSelenium::remoteDriver$getPageSource() 抓取的网页源代码并使用 write(pgSource, fileName.txt) 保存到文件中.我正在使用以下循环读取文件:

pgSource <- readChar(file.path(fPath, fileNames[i]), nchars = 1e6)
doc <- read_html(pgSource)

对于某些文件是抛出

Error in eval(substitute(expr), envir, enclos) : 
  Excessive depth in document: 256 use XML_PARSE_HUGE option [1] 

我看过这些帖子,SO33819103SO31419409这指向类似的问题,但不能完全理解如何使用@shabbychef 的变通方法,正如在上面第一个链接中使用@glossarch 建议的片段的两个帖子中所建议的那样。

library(drat)
drat:::add("shabbychef");
install.packages('xml2')
library("xml2")

编辑:我注意到,当我之前运行另一个脚本使用 URL 从网页实时抓取数据时,我没有遇到这个问题。代码是一样的,我只是在阅读 doc <- read_html(pgSource)RSelenium's remoteDriver 阅读后.

我想问这个温和的社区是我是否按照正确的步骤安装和加载xml2添加 shabbychef 的 drat 之后,或者我是否需要按照 SO17154308 中的建议添加一些其他步骤邮政。非常感谢任何帮助或建议。谢谢。

最佳答案

我不知道这样做是否正确,但@hrbrmstr 在他的一条评论中回答了我的问题。我决定发布一个答案,以便遇到这个问题的人看到它至少有一个答案。

阅读html源码时使用“HUGE”选项基本解决了问题。我的问题只与我加载以前保存的源有关。我在使用应用程序的“实时”版本时没有发现同样的问题,即直接从网站读取源代码。

无论如何,现在优秀的 xml2 包的 2016 年 8 月更新允许使用 HUGE 选项,如下所示:

doc <- read_html(pageSource, options = "HUGE")

有关更多信息,请在此处阅读 xml2 引用手册 CRAN-xml2

再次感谢@hrbrmstr 的宝贵贡献。

关于html - 文档深度过大:R 中 xml2::read_html() 的 XML_PARSE_HUGE 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39673775/

相关文章:

r - 限制zoo包中的na.locf

R:稀疏矩阵转换

xml - xml中引用xsd时xsl转换问题

r - 使用带有否定谓词函数的 dplyr 的 _if() 函数,例如 mutate_if()

java - ANT:定义一个变量并执行另一个任务

xml - 使用一些非常慢的 XPath 查询大型 XML 文件的更快/更多 Django 方式

iphone - html5 Canvas 游戏 - 如何添加视网膜支持

javascript - 单击按钮时选择框出现/消失

jquery - 使用 SVG 图像蒙版重新创建视差缩放效果

html - 带有内部空心边框的 Css 圆圈?