Я должен был сделать это однажды сам.
Один из способов сделать это - использовать выражения 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 работает со всеми веб-страницами, иногда оно может не отфильтровать код скрипта или может простопросто не работать с некоторыми другими страницами, лучше всего поэкспериментировать!)
PS Еще один способ, который работает почти идеально, я думаю, что при веб-очистке всего текста из 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, если Internet Explorer вылетает на плохой странице,тогда R может зависнуть или зависнуть сам (я не думаю, что попытка очень помогает в этом случае).Также он допускает всплывающие окна.Я не знаю, прошло уже много времени с тех пор, как я это сделал, но подумал, что должен указать на это.