用Rvest包再爬拉勾网

来源:互联网 发布:软件行业的外包 编辑:程序博客网 时间:2024/05/01 20:55

从网上查看了很多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_leveldata.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,]
#以下就是爬取豆瓣的结果:

0 0