本文爬取了某直聘网站上Python和Java的招聘信息,比较了两个方向的发展前(钱)途 ,为本科生的就业方向给一个小小的建议。
1
爬取
在招聘网站上直接以”本科生”和”Java”或”Python”作为筛选条件,以广州为例:
爬取招聘的大体信息,具体代码如下:
1from bs4 import BeautifulSoup
2import requests
3import pymongo
4
5client = pymongo.MongoClient('localhost', 27017)
6zhipin = client['zhipin']
7zhipin_java = zhipin['zhipin_java']
8zhipin_python = zhipin['zhipin_python']
9
10
11headers = {
12 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36',
13 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
14}
15
16total_page = 11
17
18
19def get_info(param, data_table):
20 '''
21 根据招聘方向(java或python..)爬取信息存进数据库
22 :param param: 招聘方向
23 :param data_table: 数据库表明
24 :return:
25 '''
26 for i in range(1, total_page):
27 url = 'https://www.zhipin.com/c101280100/d_203-h_101280100/?query={0}&page={1}'.format(
28 param, i)
29 web_data = requests.get(url, headers=headers)
30 soup = BeautifulSoup(web_data.content, 'lxml')
31 for item in soup.select('#main > div > div.job-list > ul > li'):
32 # 招聘要求
33 job_title = item.select('.job-title')[0].text # 岗位
34 salary = item.select('.red')[0].text # 薪资
35 person_info = item.select('.info-primary p')[0].text # 应聘要求
36 # 获取公司信息
37 company = item.select('.info-company h3 a')[0].text # 公司
38 company_info = item.select('.info-company p')[0].text # 公司信息
39
40 data = {
41 'job_title': job_title,
42 'salary': salary,
43 'person_info': person_info,
44 'company': company,
45 'company_info': company_info,
46 }
47 # 插入数据库
48 data_table.insert(data)
49 print(data)
50 print('*' * 100)
51 print('\n' * 5)
52
53
54if __name__ == '__main__':
55 param_list = ['java', 'python']
56 table_list = [zhipin_java, zhipin_python]
57 for param, table in zip(param_list, table_list):
58 get_info(param, table)
爬取的信息全部存在MongoDB中,便于后面的分析处理。
2
数据清洗
在数据处理这里定义了几个方法,用来处理相应的内容。
初始变量
1import pymongo
2client = pymongo.MongoClient('localhost', 27017)
3zhipin = client['zhipin']
4zhipin_java = zhipin['zhipin_java']
5zhipin_python = zhipin['zhipin_python']
6
7from collections import Counter
8from pyecharts import Bar,Line,Pie
获取地区分布情况
1import re
2def get_zone():
3 ''' 获取地区'''
4 zone_list = []
5 real_list = []
6 for item in zhipin_java.find():
7 text = item['person_info'][3:6]
8 zone_list.append(text)
9 for i in zone_list:
10 j = re.sub(r' \d-','',i)
11 real_list.append(j)
12 while '' in real_list:
13 real_list.remove('')
14 return real_list
15zone = dict(Counter(get_zone()))
整理招聘数据
1def del_key_1():
2 '''删除招聘次数为1的岗位'''
3 li = []
4 for key in job_dict.keys():
5 if job_dict[key] == 1:
6 li.append(key)
7 for i in li:
8 del job_dict[i]
9 print(job_dict)
整理薪水数据
1def get_salary():
2 '''获取招聘的工资'''
3 min_list = [] #起步工资
4 max_list = [] #最高工资
5 job_title = [] #岗位
6 for item in zhipin_java.find():
7 job_title.append(item['job_title'])
8 salary = item['salary']
9 min_list.append(int(salary.split('-')[0][:-1]))
10 max_list.append(int(salary.split('-')[1][:-1]))
11 return min_list,max_list,job_title
3
数据可视化
通过整理地区分布数据,利用pyecharts作图。分别以下面4个方面进行比较:地区分布、岗位情况、公司情况和薪水对比。
1、不同区的招聘情况:
不难看出,越靠近城市中心的地区,招聘的岗位就越多,成功应聘的机会较高;番禺和天河区相差较大,其中天河区招的Python比Java将近多了8倍;番禺区Java比Python更加热门,受公司青睐;其他区相差不大。
2、岗位情况
Python岗位情况:
Python岗位占比:
占比前五位分别是:Python工程师、数据分析师、运维工程师、大数据开发工程师和游戏AI算法工程师。
Java岗位情况:
高级工程师招聘的人数较少,大部分都是在招聘初中级工程师,难道这就是传说中的“一个诸葛亮胜过三个臭皮匠”?
3、公司情况
Python招聘公司情况:
Java招聘公司情况:
4、qian途对比
最高薪水对比:
看来Python的地位不是吹的,最高薪水也大多数都比Java的高。Java最高薪水平平均为19.24K,最低3K,最高60K;Python最高薪水平均为21.16K,最低也是3K,最高50K,比Java稍低一点。
最低薪水对比:
Python起步薪水大多数都比Java的高。Java平均起步薪水11.42K,Python平均起步薪水12.08K。
最后用两个岗位的词云来看一下:
看了这么多,该怎么选,你懂了吧? 虽然有点以偏概全,但是我相信只要能够在一个语言上做到极致,相信你的钱途同样会是一片光明的。另外希望同学们都能够找到一份好工作。
作者:Don Lex,在校学生,正在发育并且渴望成为一个有技术、有情怀的coder。
那么问题来了,想学Python,怎么入门呢?
现在,有这样的一门课《Python基础入门 第三期》,一门真正的从零学Python课,带你快速入门Python。四大应用场景,五大课程特色,九大实战项目,更好的学习Python。
组团立减100,只需99元拿下
有意的亲们抓紧时间喽~
扫描下方二维码 获取课程
免费领取Python干货大礼包
☟
长按识别二维码