使用rvest(刮)包然后清理文本

时间:2017-05-15 13:55:00

标签: r rvest bloomberg

我正在尝试使用rvest包来抓住bloomberg和cnba网站的头条新闻。现在,当您通过代码放置bloomberg网站时,文本和句子会得到很好的编辑。但是,如果你尝试cnbc网站,它会发出非常不干净的文字。

请有人建议一种清理数据的方法,以便删除所有随机字母和符号,我只留下句子。我尝试了很多方法,但似乎没有任何工作使文本看起来干净。

#install.packages("rvest")
library("rvest")
#install.packages("XML")
library("XML")
bloombergmarket <- read_html("https://www.bloomberg.com/markets")
databloombergi<-bloombergmarket%>%html_nodes(".module-headline-link")%>%html_text()
databloombergi<-gsub("\\d+","",databloombergi)
databloombergi<-gsub("[[:punct:]]","",databloombergi)

cnbcmarket <- read_html("http://www.cnbc.com/us-news/")
datacnbci<-cnbcmarket%>%html_nodes("div a")%>%html_text()
datacnbci<-gsub("\\d+","",datacnbci)
datacnbci<-gsub("[[:punct:]]","",datacnbci)

1 个答案:

答案 0 :(得分:2)

使用问题中的代码生成的datacnbci对象,看起来唯一要做的就是清理空白。

#replace multiple whitespaces with single space
datacnbci <- gsub('\\s+',' ',datacnbci)
#trim spaces from ends of elements
datacnbci <- trimws(datacnbci)
#drop blank elements
datacnbci <- datacnbci[datacnbci != '']

如果您的目标是仅捕获标题,则可能希望为您的css选择器提供更具体的div aSelector Gadget可能是获得更具体结果的好工具。

使用更具体的选择器:

datacnbci <- cnbcmarket %>% 
  html_nodes(".headline a") %>% 
  html_text()

datacnbci <- gsub("\\d+","",datacnbci)
datacnbci <- gsub("[[:punct:]]","",datacnbci)

#replace multiple whitespaces with single space
datacnbci <- gsub('\\s+',' ',datacnbci)
#trim spaces from ends of vector elements
datacnbci <- trimws(datacnbci)
#drop blank elements
datacnbci <- datacnbci[datacnbci != '']