【R语言】文本挖掘| 网页爬虫新闻内容

2021-01-28 11:24:30 浏览数 (3)

01

目标

读取该网页的新闻,包括新闻标题,发文日期,时间,每条新闻链接,文章内容

图1 网页部分截图

02

安装与加载包

代码语言:javascript复制
install.packages("rvest")
library(rvest)

03

网页读取

代码语言:javascript复制
url<-'https://www.thepaper.cn/'
web<-read_html(url)
news<-web%>%html_nodes('h2 a')

#用浏览器打开网页,右键单击-检查,查看网页源代码特点,可以知道每条新闻位于h2,a节点读取网页节点。

如何查看节点确定每篇新闻所在位置为'h2 a',详见视频:

关注公众号

后台回复【网页节点】查看视频

04

新闻题目title爬取

#获取title

代码语言:javascript复制
title<-news%>%html_text()#读取新闻题目

#查看前6行题目特点

代码语言:javascript复制
head(link)

图2 link数据特点

从link的数据结构看,我们只需要href,这个就是每个新闻对应的子链接,因此,我们要写一个循环,将link中的href提取出来。

代码语言:javascript复制
link1<-c(1:length(link))
for(i in 1:length(link))
{link1[i]<-link[[i]][1]}

#查看link1特点

图3 link1数据特点

从link1来看,并不完全是链接格式,接下来利用paste将

代码语言:javascript复制
https://www.thepaper.cn/与link1中的进行连接得到link2
link2<-paste("https://www.thepaper.cn/",link1,sep="")
link2

图4 link4结构特点

05

新闻发布日期date、时间time、内容content获取

代码语言:javascript复制
news_date<-c(1:length(link2))
date<-c(1:length(link2))
news_time<-c(1:length(link2))
news_link<-c(1:length(link2))
news_content<-c(1:length(link2))
for(i in 1:length(link2))
{
  news_date[i]<-(read_html(link2[i])%>%html_nodes('div p')%>%html_text())[3]
  date[i]<-strsplit(news_date,split = " ")[[i]][25]
  news_time[i]<-strsplit(news_date,split=" ")[[i]][26]
  news_content[i]<-read_html(link2[i])%>%html_nodes(('div.news_txt'))%>%html_text()
}

#构建数据框

代码语言:javascript复制
data_lxl<-data.frame(title,date,news_time,link2,news_content)
View(data_lxl)

图4 网页爬虫结果

1 人点赞