文档中的深度过大:R

时间:2016-09-24 07:31:24

标签: 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指出了类似的问题,但无法完全理解如何使用@glossarch在第一篇文章中建议的帖子中的建议使用@ shabbychef的解决方法链接上面。

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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

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

有关详细信息,请阅读此处的xml2参考手册 CRAN-xml2

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