一直都想学习用R语言爬虫,昨天晚上初步学习了一下rvest包和magrittr包。
首先是magrittr包,主要定义了四个管道操作符%>% %T>% %$%
%<>%。我现在只用了%>%(向右操作符),它是把左侧的数据或表达式传递给右侧的函数或表达式进行运行,可以连续操作。
如果我们想要实现取100个服从正态分布的随机数,再求这一百个数的绝对值并乘以50,再组成10*10的方阵,计算方阵每行均值,四舍五入保留整数,把结果除以7,画出余数直方图。常规的code:
set.seed(1234)
a=rnorm(100)
b=abs(a)*50
c=matrix(b,ncol=10)
d=round(apply(c,1,mean))
hist(d)
如果用上%>%,code变成:
set.seed(1234)
rnorm(100)%>%abs%>%'*'(50)%>%matrix(ncol=10)%>%round%>%'%%'(7)%>%hist
在爬虫中会经常用到%>%。
rvest包中:
read_html() 读取html文档,可以是网站链接,html本地文件,包含html的字符串也可以
html_nodes() 选择提取html文档中特定元素。可以是CSS selector,也可以是xpath selector。强烈推荐谷歌浏览器,右击所需要查看的元素,蛋鸡检查,在开发者模式中通过右击蓝色区域,单击copy,选择copy selector得到CSS,单击copyxpath得到Xpath。我觉得更好用的是谷歌浏览器的SelectorGadget插件,可以在网上下载。
然后rvest包里面还有很多函数,但我没用过,不大了解。
这一次爬取了拉勾网java职位。
library(rvest)
library(magrittr)
library(xml2)
site1<-'https:>-'https:>
site2<-' filteroption='
for(page in 1:5){
site<-paste(site1,page,site2,page,sep='>-'>
web<>
}
job<-web%>%html_nodes('h3')%>%html_text()
company<-web%>%html_nodes('.company_name a')%>%html_text()
benefit<-web%>%html_nodes('.li_b_r')%>%html_text()
wage<-web%>%html_nodes('.money')%>%html_text()
position<-web%>%html_nodes('em')%>%html_text()
position<>
information<>
write.csv(information,'C:\\Users\\Administrator\\Desktop\\11111.csv')
最后结果如下:
有什么问题可以一起讨论的~~~
-web%>-web%>-web%>-web%>-web%>联系客服