目标就是职业招聘网站:前程无忧。
前程无忧的工程师职位千千万万,那把他们都获取下来的结果是怎样呢?
来看看广州地区的各工程师职位。
基本信息有:职位名,公司名,工作地点,薪资。
开发环境
- python3.7
- requests模块
- bs4模块
- pymysql模块
- time模块,random模块
获取分析
能发现所需的基本数据都能通过查看源代码找到,也就是说直接请求直接解析就行了。
但是如此多的岗位已经页面,前程无忧会不会有反爬呢?
这里用了随机请求头来解决这个问题。
构建了多个User-Agent,用了random模块随机选择一个进行请求爬取。
#获取基本信息
for name in a2:
title = name.text.strip()
title0.append(title)
for com in b2:
company = com.get('title').strip()
company0.append(company)
for areas in c:
area = areas.text.strip()
area0.append(area)
for salary in d:
if len(salary.text) < 1:
sal = "面议"
else:
sal = salary.text.strip()
salary0.append(sal)
爬取完一页就存入MySQL数据库。这样就算中断了之前的数据也不会消失。
#入库操作
sql = """
insert into 51jobs(id,职位名,公司名,工作地点,薪资) value(null,%s,%s,%s,%s)
"""
post.execute(sql,(a,b,c,str(d)))
conn.commit()
...
结果展示:
6万多个工程师的岗位,其实仔细一看,前程无忧的工程师搜索下,搜索到的岗位也包括与工程师相关的岗位,所以后面似乎不着边际,看似与工程师沾不着边的职位也被前程无忧收录到工程师搜索结果下,所以在前程无忧的工程师搜索结果下,才会有如此庞大的工程师岗位数量呈现出来。
(随机请求头还是很有用的。)