Je voudrais lire le contenu d'une URL (eq, http://www.haaretz.com/) dans R. Je me demande comment je peux le faireComment puis-je lire et analyser le contenu d'une page web en R
8
A
Répondre
21
Pas vraiment sûr de la façon dont vous voulez traiter cette page, parce que c'est vraiment salissant. Comme nous re-learned in this famous stackoverflow question, ce n'est pas une bonne idée de faire regex sur html, donc vous aurez certainement envie d'analyser cela avec le paquet XML.
Voici un exemple pour vous aider à démarrer:
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("", "|"))]
Il en résulte un vecteur de caractère de texte surtout juste page Web (avec 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
Votre meilleur pari peut être le paquet XML - voir par exemple ce previous question.
2
Je sais que vous avez demandé R Mais peut-être python + beautifullsoup est la voie à suivre ici? Alors faites votre analyse avec R vous avez gratté l'écran avec beautifullsoup?
Mais comment se débarrasser des balises html correctement. Je sais que je peux écrire une expression RegEx mais y at-il un package qui rend le codage moins dramatique! – Mark