R语言爬虫|15行代码教你抓取拉勾网招聘信息
作者:鲁伟
一个数据科学践行者的学习日记。数据挖掘与机器学习,R与Python,理论与实践并行。个人公众号:数据科学家养成记 (微信ID:louwill12)
作为一名毫无开发经验的非计算机出身的数据爱好者,初入此坑时深受爬虫难学之苦,当初未通Python之道,写个scrapy框架就痛苦至极。想想现在大数据技术那么牛逼了,为什么我抓个数据还处处被封,后来又觉得是自己技术不够强大。本文以拉勾网为例给大家介绍一款便捷快速的R语言爬虫方法,通过Rvest包+SelectorGdaget选择器即可轻松实现简单的数据抓取。
01准备工具:Rvest包+SelectorGadget选择器
下载安装Rvest包:
install.packages("Rvest")
library(Rvest)
要想全面了解Rvest包的朋友可以去查官方帮助文档:
help(package="Rvest")
Selectorgadget插件作为一个轻便快捷的CSS选择器,好用程度简直爆炸,鼠标点击几下即可生成你想要抓取的html节点信息。这么一款神器,调用方法也是极其简单,打开任何一款搜索网页,键入Selectorgadget,点击第一个链接,也是Selectorgadget官方链接,拉到页面底端倒数第二个链接,将其拖拽到你的浏览器收藏夹,待下次打开需要爬取的网页时点击即可启用。
需拖拽的链接如图(Or drag this link to your bookmark bar):
02,拉勾网数据抓取
我们选择抓取拉勾网数据分析师岗位信息:
抓取代码如下:
library(stringr)
library(xml2)
library(rvest) #加载包
i<-1:30 #设定抓取页数
lagou_data<-data.frame()#创建数据框存储数据
#写个循环,对固定网页结构重复抓取
for (i in 1:30){
web<-read_html(str_c("https://www.lagou.com/zhaopin/shujufenxi/",i),encoding="UTF-8")#read_html函数解析网页并规定编码str_c函数对页数循环
job<-web%>%html_nodes("h2")%>%html_text()#"h2"即为Selectorgadget定位节点信息
job[16]<-NA
job<-job[!is.na(job)]#将多余信息设置为NA并剔除
#以此类推,抓取岗位其他信息
company<-web%>%html_nodes(".company_name a")%>%html_text()
inf1<-web%>%html_nodes(".p_bot .li_b_l")%>%html_text()
inf2<-web%>%html_nodes(".industry")%>%html_text()
temptation<-web%>%html_nodes(".li_b_r")%>%html_text()
#存储以上信息
job_inf<-data.frame(job,company,inf1,inf2,temptation)
lagou_data<-rbind(lagou_data,job_inf)
}
write.csv(job_inf,file="D:/Rdata/datasets/job_inf.csv")#写入数据
清洗整理后最终抓取部分数据示例如图:
03,简单小结
用rvest包结合SelectorGadget 选择器能够快速实现R语言下的网络数据抓取,并适当结合stringr包中的字符串处理函数对网页数据进行清洗和整理,抓取过程省时省力,适合R语言和爬虫入门的朋友使用学习。
微信回复关键字即可学习
回复 R R语言快速入门免费视频
回复 统计 统计方法及其在R中的实现
回复 用户画像 民生银行客户画像搭建与应用
回复 大数据 大数据系列免费视频教程
回复 可视化 利用R语言做数据可视化
回复 数据挖掘 数据挖掘算法原理解释与应用
回复 机器学习 R&Python机器学习入门