我正在尝试使用 rvest 包从 Bloomberg 和 cnba 网站上抓取头条新闻。现在,当您通过代码输入彭博网站时,文本和句子都会经过精心编辑。然而,如果你尝试 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)
最佳答案
根据您问题中的代码生成的 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 != '']
如果您的目标只是捕获标题,则您可能需要比 div a
更具体的 css 选择器。 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 != '']
关于r - 使用 rvest(抓取)包然后清理文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43981394/