最近因为在写一篇论文,需要检索百度学术上发表的一些文章以及文章的相关信息,如果是复制黏贴的话,可能会非常麻烦,为了提高工作效率,所以试着开始用R语言来爬虫。通过这两天的学习发现,R语言中的rvest包是爬虫的利器,非常方便。rvest的开发者是Hadley Wickham,他是数据可视化神器ggplot2的开发者,所以说rvest也绝对是个神器!
[大神 Hadley rvest in GitHub]https://github.com/hadley/rvest
下载rvest的网址如下:
https://cran.r-project.org/web/packages/rvest/index.html
下面对rvest包中的主要函数的功能做一下简单说明:
read_html() 读取html文档的函数,其输入可以是线上的url,也可以是本地的html文件,甚至是包含html的字符串也可以;
html_nodes() 选择提取文档中制定元素的部分;
html_tag() 提取标签名称;
html_text() 提取标签内的文本;
html_attr() 提取指定属性的内容;
html_attrs() 提取所有的属性名称及其内容;
html_table() 解析网页数据表的数据到R的数据框中。
html_form(),set_values()和submit_form() 分别表示提取、修改和提交表单。
下面是例子:
我想在百度学术上找到高中生学校归属感和主观幸福感的论文,以及这些论文发表的年份。如果是手动复制黏贴,需要重复455次,通过爬虫,只需要几分钟的时间就能搞定!
下面是R语言的代码
library(stringr)
library(xml2)
library(rvest) #加载包
i
xueshu_data
#写个循环,对固定网页结构重复抓取
for (i in 1:8){
&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8&sc_f_para=sc_tasktype%3D%7BfirstSimpleSearch%7D&sc_hit=1&rsv_page=1"),encoding="UTF-8")#read_html函数解析网页并规定编码str_c函数对页数循环
title%html_nodes(".c_font")%>%html_text()#"a"即为Selectorgadget定位节点信息,节点信息需要其他软件获得
title[16]
title
year%html_nodes(".sc_time")%>%html_text()
title_inf
xueshu_data
}
write.csv(xueshu_data,file="C:/Users/Desktop/修改/source_inf.csv")#写入数据
最后结果见下表:
一共抓取了80篇文章,表中只显示了7篇文章,有了这个数据,后续就能进行深入分析了。
领取专属 10元无门槛券
私享最新 技术干货