Я предлагаю использовать пакет XML
и XPath.Это требует некоторого изучения, но если вы серьезно относитесь к поиску в Интернете, это путь.Я сделал это с некоторыми данными о выборах на уровне округа с сайта NY Times давным-давно, и код выглядел примерно так (просто чтобы дать вам представление):
getCounty <- function(url) {
doc = htmlTreeParse(url, useInternalNodes = TRUE)
nodes <- getNodeSet(doc, "//tr/td[@class='county-name']/text()")
tmp <- sapply(nodes, xmlValue)
county <- sapply(tmp, function(x) clean(x, num=FALSE))
return(county)
}
Вы можете узнать о XPathздесь .
Другой пример: получить все имена пакетов R с временной шкалы Crantastic.Это ищет узел div
с id
"временной шкалой", затем ищет ul
с классом "временной шкалы", извлекает все первые a
узлы из родительского узла и возвращает их текст:
url <- 'http://crantastic.org/'
doc = htmlTreeParse(url, useInternalNodes = TRUE)
nodes <- getNodeSet(doc, "//div[@id='timeline']/ul[@class='timeline']/li/a[1]/text()")
tmp <- sapply(nodes, xmlValue)
tmp
> [1] "landis" "vegan" "mutossGUI" "lordif"
[5] "futile.paradigm" "lme4" "tm" "qpcR"
[9] "igraph" "aspace" "ade4" "MCMCglmm"
[13] "hts" "emdbook" "DCGL" "wq"
[17] "crantastic" "Psychometrics" "crantastic" "gR"
[21] "crantastic" "Distributions" "rAverage" "spikeslab"
[25] "sem"