用Rvest包再爬拉勾网

从网上查看了很多Rvest爬取网页的博客,比较多的是爬取拉钩的示例,我以这个示例分享下供大家参考:

library(rvest)
lagou<-"https://www.lagou.com/zhaopin/qianduankaifa/" #拉钩网址前部分
#因为需要爬取很多页的拉钩数据,因此需要构建一个爬取数据的函数
getdata<-function(url,i){
url<-paste0(lagou,i,"/?filterOption=3") #构建各个页拉钩网址
web<-read_html(url,encoding = "UTF-8") #将拉钩网页代码读取到本地;注意的是一定要设置格式,一般情况下设置为"UTF-8",如果要是设置为"UTF-8"读取失败一定得换成其他格式进行读取,直到成功为止,这一点一定要切记切记啊!满满得泪啊大哭
company<-web %>% html_nodes("div.company_name a") %>% html_text() %>% iconv("UTF-8","GB2312") #读取招聘公司名称,用html_nodes读取存储公司名称的网页代码节点,再用html_text读取该节点的公司名称,至于这里的关键点找存储公司名称的节点可以自己搜搜,网上有很多介绍。这里我最想强调的还是格式问题,通过html_text读取的公司名称一般情况下都需要转码,如:iconv("UTF-8","GB2312"),特别是涉及到中文字符一定要转码为GB2312!
job<-web %>% html_nodes("a.position_link h2") %>% html_text() %>% iconv("UTF-8","GB2312")
salary<-web %>% html_nodes("div.li_b_l span.money") %>% html_text() %>% iconv("UTF-8","GB2312")
demand<-web %>% html_nodes("div.li_b_l") %>% html_text() %>% iconv("UTF-8","GB2312") 
demand<-gsub("\n|\\s+","",demand)#文本处理,将文本中的"\n"和空格删除
demand<-demand[grep(".*经验>*",demand)] %>%strsplit(split="/")
demand<-unlist(demand)
degree<-demand[seq(2,length(demand),2)]
year<-gsub("经验",",",demand) %>% strsplit(split=",") %>% unlist(.) %>% .[seq(2,length(.),3)]
type<-web %>% html_nodes("div.industry") %>% html_text() %>% iconv("UTF-8","GB2312") %>%
  gsub("\n|\\s+","",.) %>% strsplit(split="/") %>% unlist()
industry<-type[seq(1,length(type),2)]
com_level<-type[seq(2,length(type),2)]
com_level
data.frame(company,job,salary,degree,year,industry,com_level)
}
final<-""
for (i in 1:10) {#由于拉钩数据在不断更新,隔断时间爬取多页可能就不成功了,那就把此处的10改为1,先感受下爬到数据的喜悦
  final<-rbind(final,getdata(lagou,i))
}
final<-final[-1,]
#以下就是爬取豆瓣的结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值