Как я могу прочитать и разобрать содержимое веб-страницы в R - PullRequest
11 голосов
/ 04 декабря 2009

Я хотел бы прочитать содержимое URL (например, http://www.haaretz.com/) в R. Мне интересно, как я могу это сделать

Ответы [ 3 ]

31 голосов
/ 04 декабря 2009

Не совсем уверен, как вы хотите обработать эту страницу, потому что она действительно грязная. Как мы изучили в этом известном вопросе о стекопереработке , делать регулярные выражения в html не очень хорошая идея, поэтому вам определенно захочется проанализировать это с пакетом XML.

Вот пример для начала:

require(RCurl)
require(XML)
webpage <- getURL("http://www.haaretz.com/")
webpage <- readLines(tc <- textConnection(webpage)); close(tc)
pagetree <- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
# parse the tree by tables
x <- xpathSApply(pagetree, "//*/table", xmlValue)  
# do some clean up with regular expressions
x <- unlist(strsplit(x, "\n"))
x <- gsub("\t","",x)
x <- sub("^[[:space:]]*(.*?)[[:space:]]*$", "\\1", x, perl=TRUE)
x <- x[!(x %in% c("", "|"))]

В результате получается символьный вектор, состоящий в основном из текста веб-страницы (вместе с некоторым JavaScript):

> head(x)
[1] "Subscribe to Print Edition"              "Fri., December 04, 2009 Kislev 17, 5770" "Israel Time:Â 16:48Â (EST+7)"           
[4] "Â Â Make Haaretz your homepage"          "/*check the search form*/"               "function chkSearch()" 
3 голосов
/ 04 декабря 2009

Лучшей ставкой может быть пакет XML - см., Например, предыдущий вопрос .

2 голосов
/ 04 декабря 2009

Я знаю, что вы просили Р. Но, может быть, Python + beautifullsoup - это путь вперед? Затем с помощью анализа R вы очистили экран с помощью beautifullsoup?

...