我有一个网址列表,并按如下方式提取内容:
library(httr)
link="http://www.workerspower.net/disposable-workers-the-real-price-of-sweat-shop-labor"
get.link=GET(link)
get.content=content(x2,as="text")
extract.content=str_extract_all(y2,"<p>(.*?)</p>")
这给出了带有文本的“1列表”。每个列表的长度取决于/随URL而变化。 我想将URL [link]与内容[extract.content]绑定,并将其转换为数据帧,然后将其导入到语料库中。 我的尝试失败了,例如。由于行长不同,这不起作用:
all=data.frame(url.vec=c(link1,link2),text.vec=c(extract.content1,extract.content2))
有谁知道如何将字符[vector]与字符[list]结合起来?
答案 0 :(得分:3)
我会使用XML
包执行此操作。然后你应该避免使用带有html / xml文档的正则表达式。请改用xpath
。在这里,我创建了一个小函数,它给出了一个创建语料库的链接。
library(XML)
create.corpus <- function(link){
doc <- htmlParse(link)
parag <- xpathSApply(doc,'//p',xmlValue)
library(tm)
cc <- Corpus(VectorSource(parag))
meta(cc,type='corpus','link') <- link
cc
}
## call it
cc <- create.corpus(link)
检查结果:
meta(cc,type='corpus')
# $create_date
# [1] "2014-01-03 17:40:50 GMT"
#
# $creator
# [1] ""
#
# $link
# [1] "http://www.workerspower.net/disposable-workers-the-real-price-of-sweat-shop-labor"
> cc
# A corpus with 36 text documents