从R中的网页中提取所有可能的文本

时间:2017-03-31 07:02:15

标签: r

我使用此脚本从网页中提取文本

url <- "http://www.dlink.com/it/it"

doc <- getURL(url)

#get the text from the body
html <- htmlTreeParse(doc, useInternal = TRUE)
txt <- xpathApply(html, "//body//text()[not(ancestor::script)][not(ancestor::style)][not(ancestor::noscript)]", xmlValue)
txt<-toString(txt)

但问题是它只需要第一页中的单词,如何将其扩展到整个网站?

1 个答案:

答案 0 :(得分:0)

我选择rvest来填充链接并purrr进行迭代:

library(rvest)
library(purrr)

url <- "http://www.dlink.com/it/it"

r <- read_html(url) %>% 
    html_nodes('a') %>% 
    html_attr('href') %>% 
    Filter(function(f) !is.na(f) & !grepl(x = f, pattern = '#|facebook|linkedin|twitter|youtube'), .) %>% 
    map(~{
        print(.x)
        html_session(url) %>% 
            jump_to(.x) %>% 
            read_html() %>% 
            html_nodes('body') %>% 
            html_text() %>% 
            toString()
    })

我从链接列表中筛选出社交网络和死链接,可能会有一些调整。

请注意,你会伤害很多垃圾。可能需要针对每个页面内部的内容进行更多定位(即:比整个body标记更具特色的内容)