rvest包爬取猎聘网招聘信息

rvest包爬取猎聘网招聘信息

R语言中文社区推文学习笔记

链接地址为:https://www.liepin.com/zhaopin/?d_sfrom=search_fp_nvbar&init=1

首先我们需要下面几个函数,它们的用处分别是:

函数 作用
read_html() 读取html文档
html_nodes() 获取指定名称的网页元素、节点
html_text() 获得指定名称的网页元素、节点文本
html_attrs() 提取所有属性名称及其内容
html_tag() 提取标签名称
html_table() 解析网页数据表的数据到R的数据框中
html_session() 利用cookie实现模拟登陆
guess_encoding() 返回文档的详细编号
repair_encoding() 用来修复html文档读入后的乱码问题

爬取网页代码

  • %>%:表示管道函数,将把左件的值发送给右件的表达式,并作为右件表达式函数的第一个参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
## 爬取猎聘网招聘信息
## 一、爬取网页代码
library(rvest)
url = "https://www.liepin.com/zhaopin/?d_sfrom=search_fp_nvbar&init=1"
page = read_html(url)
## 二、提取职位
position = page%>%html_nodes('ul.sojob-list div.sojob-item-main clearfix div.job-info, h3 a') %>% html_text(trim = TRUE)
position
position = position[-41]
## 提取职位链接,每个职位的下面都有一个链接,打开这个链接就是这个职位的详细介绍
link = page %>% html_nodes('ul.sojob-list div.sojob-item-main div.job-inof, h3 a') %>% html_attrs()
link[1] ##我们可以发现link是一个list,我们用一个循环来把链接提取出来
link1 = c(1:length(link))
for(i in 1:length(link))
link1[i] = link[[i]]
link1
link = link1[-41]
rm(link1)
rm(i)
## 四、提取薪水
salary = page %>% html_nodes('span.text-warning') %>% html_text()
salary
## 五、提取工作地点
location = page %>% html_nodes('p.condition a') %>% html_text()
location
## 六、提取教育背景
edu = page %>% html_nodes('span.edu') %>% html_text()
edu
## 七、提取工作经验
exper = page %>% html_nodes('p.condition span') %>% html_text()
exper
## 结果不仅提取了工作经验还提取到了薪水和学历,我们可以设置一个双重循环来提取这三项内容
dt = matrix(,length(exper)/3,3)
colnames(dt) = c("salary", "edu", "exper")
for(n in 1:3)
{
j = 1
i = n
while(i<length(exper))
{
dt[j,n] = exper[i];
j = j + 1
i = i + 3
}
}
dt
rm(i)
rm(j)
rm(n)

## 八、数据合并
df = matrix(, 40, 6)
df[,1] = position
df[,2] = dt[,1]
df[,3] = dt[,2]
df[,4] = dt[,3]
df[,5] = location
df[,6] = link
colnames(df) = c("职位","薪水","学历","经验","工作地点","链接")
head(df)
# R

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×