我正在尝试使用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)
答案 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 a
。 Selector 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 != '']