Во-первых, я хотел бы извиниться за новый вопрос, так как мой профиль еще не позволяет мне комментировать комментарии других людей, особенно два сообщения SO, которые я видел. Так что, пожалуйста, потерпите этого старшего парня :-)
Я пытаюсь прочитать список из 100 символьных файлов размером от 90 КБ до 2 МБ, а затем с помощью пакета 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]
Я видел эти сообщения, SO33819103 и SO31419409, которые указывают на аналогичные проблемы но не могу полностью понять, как использовать обходной путь @shabbychef, предложенный в обоих сообщениях, с использованием фрагмента, предложенного @glossarch в первой ссылке выше.
library(drat)
drat:::add("shabbychef");
install.packages('xml2')
library("xml2")
РЕДАКТИРОВАТЬ: я заметил, что когда ранее я запускал другой скрипт, очищающий данные в реальном времени с веб-страниц с использованием URL-адресов, я не сталкивался с этой проблемой. Код был тот же, я просто читал doc <- read_html(pgSource)
после того, как читал его из RSelenium's remoteDriver
.
Что я хотел бы спросить у этого доброго сообщества, так это правильно ли я выполняю шаги по установке и загрузке xml2
после добавления shabbychef's drat или мне нужно добавить какой-то другой шаг, как предложено в SO17154308. Любая помощь или предложения приветствуются. Спасибо.
htmltidy
(используйте версию GH, так как мне нужно выполнить отправку CRAN это скоро) может исправить это достаточно, чтобы предотвратить ошибку синтаксического анализатора. w/r/t, используя код Стивена, вы также можете сделатьdevtools::install_github("shabbychef/xml2")
, если этот метод не работает. - person hrbrmstr   schedule 24.09.2016htmltidy
, иshabbchef/xml2
, как вы любезно предложили. Мне также пришлось заранее установить RTools. На этот раз я не получил ошибку, как раньше, поскольку RStudio продолжал падать послеdoc <- read_html(pgSource)
с уведомлением R Session Aborted / R обнаружил фатальную ошибку / Сеанс был завершен, после чего я должен перезапустить IDE. Если это поможет, следующая ссылка на файл, вызывающий проблему. Он весит около 400 КБ и находится на моем диске Google. ссылка - person salvu   schedule 24.09.2016htmltidy
, возможно, это связано с использованием версии CRAN вместо версии GitHub (я исправил ошибку, которая еще не попала в CRAN). Однако установите пакетxml2
из CRAN в новом сеансе R. Затем попробуйтеpg <- read_html("66951-77_src.html", options="HUGE")
, так как кажется, что Хэдли или Джим недавно добавили его поддержку (почему они отклонились от фактического имени параметра, мне не понятно, поскольку они сохранили его для всех остальных). - person hrbrmstr   schedule 24.09.2016htmltidy
не скачивался и не устанавливался должным образом. Я также использовалxml2
из CRAN. Теперь read_html работал при тестировании с одним из проблемных файлов. Тем временем я использовал живую версию для загрузки исходников страницы и использования их без сохранения, так как это не приводило к ошибкам. Но это решение позволяет мне использовать сохраненный исходный код, а не запускать его в прямом эфире. Я не хочу вызывать колокольчики веб-сервера :-). Спасибо миллион. - person salvu   schedule 25.09.2016