r - 使用 rvest(抓取)包然后清理文本

标签 r rvest bloomberg

我正在尝试使用 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/

相关文章:

r - XPath 选择和连接所有文本节点

r - 从中提取表

Python Bloomberg API pdblp 盘中请求

excel - 使用Rblapi包拉取数据

r - 根据R中的行索引添加列值

mysql - 在 SQL 的另一列中提取具有指定公共(public)值的元组

r - 在绘图期间 "R"中 "tmap"库将标签放置在绘图区域之外(部分)

r Shiny 的操作按钮

R:从网站中提取单词

c# - 使用 Bloomberg API 时为 "Failed to load admin schema"