Ответ 1
Я должен был это делать сам по себе.
Один из способов сделать это - использовать выражения XPath. Эти пакеты должны быть установлены из хранилища в http://www.omegahat.org/
library(RCurl)
library(RTidyHTML)
library(XML)
Мы используем RCURL для подключения к интересующему веб-сайту. В нем есть много вариантов, которые позволяют вам получить доступ к веб-сайтам, которые функции по умолчанию в базе R будут иметь трудности, и я думаю, что это справедливо. Это R-интерфейс библиотеки libcurl.
Мы используем RTidyHTML для очистки некорректных веб-страниц HTML, чтобы их легче анализировать. Это R-интерфейс библиотеки libtidy.
Мы используем XML для анализа HTML-кода с помощью выражений XPath. Это R-интерфейс библиотеки libxml2.
В любом случае, вот что вы делаете (минимальный код, но доступны опции, см. страницы справки соответствующих функций):
u <- "http://stackoverflow.com/questions/tagged?tagnames=r"
doc.raw <- getURL(u)
doc <- tidyHTML(doc.raw)
html <- htmlTreeParse(doc, useInternal = TRUE)
txt <- xpathApply(html, "//body//text()[not(ancestor::script)][not(ancestor::style)][not(ancestor::noscript)]", xmlValue)
cat(unlist(txt))
Возможно, есть некоторые проблемы с этим подходом, но я не могу вспомнить, что у них на голове (я не думаю, что мое выражение xpath работает со всеми веб-страницами, иногда это может не фильтровать script или он может просто не работать с некоторыми другими страницами, лучше всего экспериментировать!)
P.S. Другой способ, который работает почти отлично, я думаю, что при веб-очищении весь текст из html следующий (в основном, для того, чтобы сделать Internet Explorer для вас):
library(RDCOMClient)
u <- "http://stackoverflow.com/questions/tagged?tagnames=r"
ie <- COMCreate("InternetExplorer.Application")
ie$Navigate(u)
txt <- list()
txt[[u]] <- ie[["document"]][["body"]][["innerText"]]
ie$Quit()
print(txt)
ОДНАКО, мне никогда не нравилось это делать, потому что это не так медленно, но если вы векселируете его и применяете вектор URL-адресов, если интернет-браузер падает на плохую страницу, тогда R может повесить или рухнуть сам (я Думаю, что в этом случае это очень помогает?). Также он склонен к разрешению всплывающих окон. Я не знаю, прошло какое-то время с тех пор, как я это сделал, но подумал, что я должен указать на это.