• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言网页抓取入门-rvest包

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
R语言中的rvest包是极易掌握的网页抓取工具,只要进行适当的操作就可以入门网页抓取。
1.背景介绍
>install.packages("rvest") #安装rvest包
>library(rvest) #加载rvest包,该过程中会自动加载xml2包
rvest包中常用的函数有如下几个:
read_html()用于下载网页;html_nodes()用于获取网页上的指定节点信息或者元素,确定抓取范围;html_text()用于提取文本内容;html_attrs()用于获取链接。
这里将针对 研究生招生信息网国家政策 部分进行发布时间、标题和链接抓取。# http://yz.chsi.com.cn/kyzx/zcdh/ 点击打开链接

2.网页元素查看
点击右键,选择“检查元素”,即可对网页元素进行查看,如下所示

由图可以看出,我们所需要的信息在节点<div class="news_list">内,内容包括时间、链接和标题名称,所以下面提取信息是要定位好位置,以提取到真正要的信息。
3.具体操作
>Link<-'http://yz.chsi.com.cn/kyzx/zcdh/'#指定链接
>DLink<-read_html(Link) #将链接上的内容下载下来
接下来提取网页上的标题名称、发布时间以及链接

3.1提取发布时间
>time<-DLink%>%html_nodes('div.news_list li span')%>%html_text()
#%>%为管道函数,起到传递的作用。其中,DLink%>%html_nodes('div.news_list li span')起到定位时间位置的作用(见上图查看元素span),而html_text()则用来提取时间。
上述语句等同于t1<-html_nodes(DLink,'div.news_list li span'),time<-html_text(t1)

3.2提取标题
>titles<-DLink%>%html_nodes('div.news_list li a')%>%html_text()
#标题与链接在<a /a>中(见上图),利用html_text即可提取到标题,而利用html_attrs()可提取到链接

3.3提取链接
>websites<-DLink%>%html_nodes('div.news_list li a')%>%html_attrs()
#提取到的数据为列表格式([[]]),可通过str(websites)查看数据格式,且所需要的链接在位置2(href)处,故需要提取位置2的信息。

进行链接提取:
>websites1<-c(1:length(websites))#定义一个与列表数据记录数一致的向量,用与存储链接
>for(i in 1:length(websites)) #定义语句循环次数,直至所有链接提取完成
>{
>websites1[i]<-websites[[i]][2] #提取列表中位置2的信息,填充websites1
>}
得到websites1的数据如下所示,


每个链接都差了前缀'http://yz.chsi.com.cn',于是为所有40(视具体数据条数而定)个链接增加前缀;
>site<-rep('http://yz.chsi.com.cn',40) #定义site为含有40个'http://yz.chsi.com.cn'的向量,rep()为重复复制。


将site与websites1中的字符串合并
>websites2<-paste(site,websites1,sep="") #需指定sep="",否则会默认两字符串间有一个空格。


3.4将时间、标题和链接合并
>policy<-data.frame(time,titles,websites2)#将三者合并为数据框
接下来对数据框中的字段名称进行重命名
#>names(policy)<-c("时间","标题","链接")#对数据框的字段进行重命名
上述语句会出现无法运行的错误,具体原因未知(Error: unexpected input in "names(policy)<-c()),但是可以采用另外一种方式实现
>install.packages("reshape")
>library(reshape)
>rename(policy,c(time="时间",titles="标题",websites2="链接"))#此时即可实现数据框字段的重新命名


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[读书笔记]R语言实战(十四)主成分和因子分析发布时间:2022-07-18
下一篇:
R语言第十一讲 决策树与随机森林发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap