这篇博文给大家分享如何使用R语言抓取《欢乐颂2》的热门新闻,博文给出了一个封装的函数,只要输入关键词和页数就可把百度新闻中与该关键词有关的内容抓取出来。
需要加载的包
library(rvest)
library(stringr)
library(tidyverse)
热闻抓取函数
fun=function(keyword,page){
theme=author=date=href=NULL
for(i in 1:page){
url=sprintf('http://news.baidu.com/ns?word=%s&pn=%s0&cl=2&ct=1&tn=news&rn=20&ie=utf-8&bt=0&et=0',
keyword,i)
web=read_html(url)
theme=c(theme,web%>%html_nodes('h3')%>%html_text())
txx=web%>%html_nodes('.c-author')%>%html_text()
date=c(date,txx%>%
str_extract_all('\\d{4}年\\d{1,2}月\\d{1,2}日 \\d{1,2}:\\d{1,2}|\\d{1,2}小时前|\\d{1,2}分钟前')%>%
unlist())
txx1=txx%>%str_split('\\d{4}年\\d{1,2}月\\d{1,2}日 \\d{1,2}:\\d{1,2}|\\d{1,2}小时前|\\d{1,2}分钟前')%>%
unlist()%>%str_trim()
author=c(author,txx1[txx1%>%str_length()>1])
href=c(href,web%>%html_nodes('h3>a')%>%html_attr('href'))
}
dat = data.frame(新闻主题=theme, 新闻单位=author, 新闻日期=date,新闻链接=href,
stringsAsFactors = F)
return(dat)
}
抓取《欢乐颂2》热闻
dat=fun('欢乐颂2',10)
DT::datatable(dat)
查看对热闻排序
as.data.frame( table(dat$新闻主题))%>%arrange(desc(Freq))%>%head()
绘制云词
library(wordcloud2)
wordcloud2(table(dat$新闻主题),color="random-light",backgroundColor = 'black')
欢迎关注魔方学院QQ群