周末日常数据处理学习,心血来潮对拉勾关于Python职位招聘表示很感兴趣,所以拿点数据作为学习和实践。
获取字段:
- 职位名称
- 公司名称
- 工资待遇
- 工作经验
- 学历要求
数据获取思路:
模拟人为浏览网页行为,添加header、加大延时(如果频繁获取会出现403,不过很快解禁)、添加代理(现在代理网站都不咋的,用那么几下就error;各位大牛有好网站可推荐哦)。分析网页结构,借助html自带标签和各字段class采用css方式解析需要字段。
数据获取代码
# post请求参数
header = {
'Host': 'www.lagou.com',
'Referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
param = {
'first': 'true',
'pn': page,
'kd': kind
}
# 请求的url
url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false'
response = requests.post(url, headers=header, data=param)
response.encoding = 'utf-8'
if response.status_code == 200:
response = response.json()
# 请求响应中的positionResult 包括查询总数 以及该页的招聘信息(公司名、地址、薪资、福利待遇等...)
return response['content']['positionResult']
return None
解析代码
python_job = []
# 公司全名
python_job.append(j['companyFullName'])
# 公司简称
python_job.append(j['companyShortName'])
# 公司规模
python_job.append(j['companySize'])
# 融资
python_job.append(j['financeStage'])
# 所属区域
python_job.append(j['district'])
# 职称
python_job.append(j['positionName'])
# 要求工作年限
python_job.append(j['workYear'])
# 招聘学历
python_job.append(j['education'])
# 薪资范围
python_job.append(j['salary'])
# 福利待遇
python_job.append(j['positionAdvantage'])
数据分析
-
福利待遇词云
福利
感觉行业最大的福利弹性,一种很帅的福利(就是那种可以无限弹的机制) -
北京各区县职位热力
北京市部分区域python职位分布 .png
大海淀的职位需求还是很高的,以后找工作也可以往海淀扎扎堆,也许你的心仪公司就在这也说不定。 -
工资分布直方图
工资范围分布
缺陷
- 数据处理和清洗的比较粗糙
- 部分数据还没有想到比较好的表征(大佬们可以多提建议)
- 关于代码和数据有需要可以私信。
网友评论