本文以Python爬虫、数据分析、后端、数据挖掘、全栈开发、运维开发、高级开发工程师、大数据、机器学习、架构师这10个岗位,从拉勾网上爬取了相应的职位信息和任职要求,并通过数据分析可视化,直观地展示了这10个职位的平均薪资和学历、工作经验要求。

文章很长,耐心观看。

01

爬虫准备

1、先获取薪资和学历、工作经验要求

由于某网数据加载是动态加载的,需要我们分析。分析方法如下:

F12分析页面数据存储位置

我们发现网页内容是通过post请求得到的,返回数据是json格式,那我们直接拿到json数据即可。

我们只需要薪资和学历、工作经验还有单个招聘信息,返回json数据字典中对应的英文为:positionId,salary, education, workYear(positionId为单个招聘信息详情页面编号)。相关操作代码如下:

  • 文件存储:
def file_do(list_info):# 获取文件大小file_size = os.path.getsize(r'G:\lagou_anv.csv')if file_size == 0:# 表头name = ['ID','薪资', '学历要求', '工作经验']# 建立DataFrame对象file_test = pd.DataFrame(columns=name, data=list_info)# 数据写入file_test.to_csv(r'G:\lagou_anv.csv', encoding='gbk', index=False)else:with open(r'G:\lagou_anv.csv', 'a+', newline='') as file_test:# 追加到文件后面writer = csv.writer(file_test)# 写入文件writer.writerows(list_info)
  • 基本数据获取:
# 1. post 请求 url
req_url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
# 2.请求头 headers
headers = {'Accept': 'application/json,text/javascript,*/*;q=0.01','Connection': 'keep-alive','Cookie': '你的Cookie值,必须加上去','Host': 'www.lagou.com','Referer': 'https://www.lagou.com/jobs/list_Python?labelWords=&fromSearch=true&suginput=','User-Agent':  str(UserAgent().random),
}def get_info(headers):# 3.for 循环请求(一共30页)for i in range(1, 31):# 翻页data = {'first': 'true','kd': 'Python爬虫','pn': i}# 3.1 requests 发送请求req_result = requests.post(req_url, data=data, headers=headers)req_result.encoding = 'utf-8'print("第%d页:"%i+str(req_result.status_code))# 3.2 获取数据req_info = req_result.json()# 定位到我们所需数据位置req_info = req_info['content']['positionResult']['result']print(len(req_info))list_info = []# 3.3 取出具体数据for j in range(0, len(req_info)):salary = req_info[j]['salary']education = req_info[j]['education']workYear = req_info[j]['workYear']positionId = req_info[j]['positionId']list_one = [positionId,salary, education, workYear]list_info.append(list_one)print(list_info)# 存储文件file_do(list_info)time.sleep(1.5)
  • 运行结果:

2、根据获取到的positionId 来访问招聘信息详细页面

  • 根据positionId还原访问链接:
position_url = []
def read_csv():# 读取文件内容with open(r'G:\lagou_anv.csv', 'r', newline='') as file_test:# 读文件reader = csv.reader(file_test)i = 0for row in reader:if i != 0 :# 根据positionID补全链接url_single = "https://www.lagou.com/jobs/%s.html"%row[0]position_url.append(url_single)i = i + 1print('一共有:'+str(i-1)+'个')print(position_url)
  • 访问招聘信息详情页面,获取职位描述(岗位职责和岗位要求)并清理数据:
def get_info():for position_url in position_urls:work_duty = ''work_requirement = ''response00 = get_response(position_url,headers = headers)time.sleep(1)content = response00.xpath('//*[@id="job_detail"]/dd[2]/div/p/text()')# 数据清理j = 0for i in range(len(content)):content[i] = content[i].replace('\xa0',' ')if content[i][0].isdigit():if j == 0:content[i] = content[i][2:].replace('、',' ')content[i] = re.sub('[;;.0-9。]','', content[i])work_duty = work_duty+content[i]+ '/'j = j + 1elif content[i][0] == '1' and not content[i][1].isdigit():breakelse:content[i] = content[i][2:].replace('、', ' ')content[i] = re.sub('[、;;.0-9。]','',content[i])work_duty = work_duty + content[i]+ '/'m = i# 岗位职责write_file(work_duty)print(work_duty)# 数据清理j = 0for i in range(m,len(content)):content[i] = content[i].replace('\xa0',' ')if content[i][0].isdigit():if j == 0:content[i] = content[i][2:].replace('、', ' ')content[i] = re.sub('[、;;.0-9。]', '', content[i])work_requirement = work_requirement + content[i] + '/'j = j + 1elif content[i][0] == '1' and not content[i][1].isdigit():# 控制范围breakelse:content[i] = content[i][2:].replace('、', ' ')content[i] = re.sub('[、;;.0-9。]', '', content[i])work_requirement = work_requirement + content[i] + '/'# 岗位要求write_file2(work_requirement)print(work_requirement)print("-----------------------------")
  • 运行结果:

duty

require

3、四种图可视化数据+数据清理方式

  • 矩形树图:
# 1.矩形树图可视化学历要求
from pyecharts import TreeMap
education_table = {}
for x in education:education_table[x] = education.count(x)
key = []
values = []
for k,v in education_table.items():key.append(k)values.append(v)data = []
for i in range(len(key)) :dict_01 = {"value": 40, "name": "我是A"}dict_01["value"] = values[i]dict_01["name"] = key[i]data.append(dict_01)
tree_map = TreeMap("矩形树图", width=1200, height=600)
tree_map.add("学历要求",data, is_label_show=True, label_pos='inside')
  • 玫瑰饼图:
# 2.玫瑰饼图可视化薪资
import re
import math
'''
# 薪水分类
parameter : str_01--字符串原格式:20k-30k
returned value : (a0+b0)/2 --- 解析后变成数字求中间值:25.0
'''
def assort_salary(str_01):reg_str01 = "(\d+)"res_01 = re.findall(reg_str01, str_01)if len(res_01) == 2:a0 = int(res_01[0])b0 = int(res_01[1])else :a0 = int(res_01[0])b0 = int(res_01[0])return (a0+b0)/2from pyecharts import Pie
salary_table = {}
for x in salary:salary_table[x] = salary.count(x)key = ['5k以下','5k-10k','10k-20k','20k-30k','30k-40k','40k以上']
a0,b0,c0,d0,e0,f0=[0,0,0,0,0,0]for k,v in salary_table.items():ave_salary = math.ceil(assort_salary(k))print(ave_salary)if ave_salary < 5:a0 = a0 + velif ave_salary in range(5,10):b0 = b0 +velif ave_salary in range(10,20):c0 = c0 +velif ave_salary in range(20,30):d0 = d0 +velif ave_salary in range(30,40):e0 = e0 +velse :f0 = f0 + v
values = [a0,b0,c0,d0,e0,f0]pie = Pie("薪资玫瑰图", title_pos='center', width=900)
pie.add("salary",key,values,center=[40, 50],is_random=True,radius=[30, 75],rosetype="area",is_legend_show=False,is_label_show=True)
  • 普通柱状图:
# 3.工作经验要求柱状图可视化
from pyecharts import Bar
workYear_table = {}
for x in workYear:workYear_table[x] = workYear.count(x)
key = []
values = []
for k,v in workYear_table.items():key.append(k)values.append(v)
bar = Bar("柱状图")
bar.add("workYear", key, values, is_stack=True,center= (40,60))
  • 词云图:
import jieba
from pyecharts import WordCloud
import pandas as pd
import re,numpystopwords_path = 'H:\PyCoding\Lagou_analysis\stopwords.txt'
def read_txt():with open("G:\lagou\Content\\ywkf_requirement.txt",encoding='gbk') as file:text = file.read()content = text# 去除所有评论里多余的字符content = re.sub('[,,。. \r\n]', '', content)segment = jieba.lcut(content)words_df = pd.DataFrame({'segment': segment})# quoting=3 表示stopwords.txt里的内容全部不引用stopwords = pd.read_csv(stopwords_path, index_col=False,quoting=3, sep="\t", names=['stopword'], encoding='utf-8')words_df = words_df[~words_df.segment.isin(stopwords.stopword)]words_stat = words_df.groupby(by=['segment'])['segment'].agg({"计数": numpy.size})words_stat = words_stat.reset_index().sort_values(by=["计数"], ascending=False)test = words_stat.head(200).valuescodes = [test[i][0] for i in range(0, len(test))]counts = [test[i][1] for i in range(0, len(test))]wordcloud = WordCloud(width=1300, height=620)wordcloud.add("必须技能", codes, counts, word_size_range=[20, 100])wordcloud.render("H:\PyCoding\Lagou_analysis\cloud_pit\ywkf_bxjn.html")

02

Python爬虫岗位

学历要求

工作月薪

工作经验要求

爬虫技能

关键词解析:

  • 学历:本科
  • 工作月薪:10k-30k
  • 工作经验:1-5年
  • 技能:分布式、多线程、框架、Scrapy、算法、数据结构、数据库

综合:爬虫这个岗位在学历要求上比较放松,大多数为本科即可,比较适合想转业的老哥小姐姐,学起来也不会特别难。而且薪资待遇上也还算比较优厚,基本在10k以上。不过唯一对工作经验要求还是比较高的,有近一半的企业要求工作经验要达到3年以上。

03

Python数据分析岗位

学历要求

工作月薪

工作经验要求

数据分析技能

关键词解析:

  • 学历:本科(硕士比例有所增高)
  • 工作月薪:10k-30k
  • 工作经验:1-5年
  • 技能:SAS、SPSS、Hadoop、Hive、数据库、Excel、统计学、算法

综合:数据分析这个岗位在学历要求上比爬虫要求稍微高一些,硕士比例有所提升,专业知识上有一定要求。薪资待遇上也还算比较优厚,基本在10k以上,同时薪资在30k-40k的比例也有所上升。对工作经验要求还是比较高,大部分的企业要求工作经验要达到3年以上。

04

Python后端岗位

学历要求

工作月薪

工作经验要求

后端技能

关键词解析:

  • 学历:本科
  • 工作月薪:10k-30k
  • 工作经验:3-5年
  • 技能:Flask、Django、Tornado、Linux、MySql、Redis、MongoDB、TCP/IP、数学(哈哈)

综合:web后端这个岗位对学历要求不高,但专业知识上有很大要求,得会Linux操作系统基本操作、三大主流数据库的使用、以及三大基本web框架的使用等计算机相关知识,总体来说难道还是比较大。薪资待遇上也比较优厚,基本在10k以上,同时薪资在30k-40k的比例也有近20%。对工作经验要求还是比较高,大部分的企业要求工作经验要达到3年以上。

05

Python数据挖掘岗位

学历要求

工作月薪

工作经验要求

数据挖掘技能

关键词解析:

  • 学历:本科(硕士)
  • 工作月薪:20k-40k
  • 工作经验:3-5年
  • 技能:学历(hhh)、Hadoop、Spark、MapReduce、Scala、Hive、聚类、决策树、GBDT、算法

综合:数据挖掘这个岗位,在学历要求是最高的,虽然还是本科居多,但硕士比例明显增加,还有公司要求博士学历。在专业知识上也有很大要求,得会Linux操作系统基本操作、大数据框架Hadoop、Spark以及数据仓库Hive的使用等计算机相关知识,总体来说难道还是比较大。薪资待遇上特别优厚,基本在20k以上,薪资在30k-40k的比例也有近40%,对工作经验要求还是比较高,大部分的企业要求工作经验要达到3年以上。

06

Python全栈开发岗位

学历要求

工作月薪

工作经验要求

全栈开发技能

关键词解析:

  • 学历:本科
  • 工作月薪:10k-30k
  • 工作经验:3-5年
  • 技能:测试、运维、管理、开发、数据结构、算法、接口、虚拟化、前端

综合:全栈开发这个岗位什么都要懂些,什么都要学些,在学历要求上并不太高,本科学历即可,在专业知识上就不用说了,各个方面都得懂,还得理解运用。薪资待遇上也还可以,基本在10k以上,薪资在30k-40k的比例也有近20%。对工作经验要求还是比较高,大部分的企业要求工作经验要达到3年以上。总体来说,就我个人而言会觉得全栈是个吃力多薪水少的岗位。

07

Python运维开发岗位

学历要求

工作月薪

工作经验要求

运维开发技能

关键词解析:

  • 学历:本科
  • 工作月薪:10k-30k
  • 工作经验:3-5年
  • 技能:SVN、Git、Linux、框架、shell编程、mysql,redis,ansible、前端框架

综合:运维开发这个岗位在学历要求上不高,除开占一大半的本科,就是专科了。工作经验上还是有一些要求,大多数要求有3-5年工作经验。从工资上看的话,不高也不低,20k以上也占有62%左右。要学习的东西也比较多,前端、后端、数据库、操作系统等等。

08

Python高级开发工程师岗位

学历要求

工作月薪

工作经验要求

高级开发工程师技能

关键词解析:

  • 学历:本科
  • 工作月薪:20k左右
  • 工作经验:3-5年
  • 技能:WEB后端、MySQL、MongoDB、Redis、Linux系统(CentOS)、CI/CD 工具、GitHub

综合:高级开发工程师这个岗位在学历要求上与运维开发差不多,薪资也相差不大,22%以上的企业开出了30k以上的薪资,65%左右企业给出20k以上的薪资。当然,对工作经验上还是要求较高,有近一半的企业要求工作经验要达到3年以上。

09

Python大数据岗位

学历要求

工作月薪

工作经验要求

大数据技能

关键词解析:

  • 学历:本科(硕士也占比很大)
  • 工作月薪:30k以上
  • 工作经验:3-5年
  • 技能:前端开发、 MySQL、Mongo、Redis、Git
    、Flask、Celery、Hadoop/HBase/Spark/Hive、Nginx

综合:现在是大数据时代,大数据这个岗位也是相当火热,在学历要求上几乎与运维开发一模一样。当然,可能数据上出现了巧合,本科居多,工作经验上1-5年占据一大半,薪资上也基本上在20k以上,该岗位薪资在20k以上的企业占了55%左右。

10

Python机器学习岗位

学历要求

工作月薪

工作经验要求

机器学习技能

关键词解析:

  • 学历:本科(硕士也占比很大)
  • 工作月薪:30k以上
  • 工作经验:3-5年
  • 技能:Machine Learning,Data Mining,Algorithm
    研发,算法,Linux,决策树,TF,Spark+MLlib,Cafe

综合:机器学习这个岗位在学历要求上比较严格,虽然看起来是本科居多,但对于刚毕业或毕业不久的同学,如果只是个本科,应聘还是很有难度的。当然机器学习岗位薪资特高,60%在30k以上,近90%在20k以上,97%在10k以上。除开对学历要求比较高外,对工作经验要求也比较高,有近一半的企业要求工作经验要达到3年以上。

11

Python架构师岗位

学历要求

工作月薪

工作经验要求

架构师技能

关键词解析:

  • 学历:本科
  • 工作月薪:30k以上
  • 工作经验:5-10年
  • 技能:Flask,Django,MySQL,Redis,MongoDB,Hadoop,Hive,Spark,ElasticSearch,Pandas,Spark/MR,Kafka/rabitmq

综合:架构师这个岗位单从学历上看不出什么来,但在薪资上几乎与机器学习一样,甚至比机器学习还要高,机器学习中月薪40k以上的占23.56%,架构师中月薪40k以上的占30.67%。在学历要求上比机器学习要略低,本科居多,但在工作经验上一半以上的企业要求工作经验在5-10年。在必要技能上也要求特别严格,比之前说过的全栈开发师有过之而无不及。

看着这月薪,我是超级想去了,你呢?

12

写在最后

从上文可以看出,Python相关的各个岗位薪资还是不错的,基本上所有岗位在10k以上的占90%,20k以上的也基本都能占60%左右。而且学历上普遍来看,本科学历占70%以上。唯一的是需要工作经验,一般得有个3-5年工作经验,也就是如果24岁本科毕业,27岁就有很大机会拿到月薪20k以上。有没有很心动?

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

求职季哪种 Python 程序员能拿高薪?相关推荐

  1. python恶搞代码-搞笑的程序猿:看看你是哪种Python程序员

    不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的Python程序员编出的Python代码,显示出了不同的风格,代码都很简单,有趣.下面让我们一起来看看一个Python程序猿进阶 ...

  2. 北京python程序员求职_想找python程序员的工作,但发现稍微好点的职位都集中在北京。我非常想当python程序员,北京值得去吗?...

    想当Python程序员,北京值得去吗?你也知道北京的人口多.环境污染很严重,房价也高得离谱,交通拥挤.但每天照样有无数人从外地往北京跑,也有无数人从北京离开.所以,还是先来看看去北上广深一类大城市工作 ...

  3. Python大佬抓取了招聘信息并告诉你哪种Python 程序员最赚钱

    回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 老骥伏枥,志在千里.烈士暮年,壮心不已. 本文以Python爬虫.数据分析.后端.数据挖掘.全栈开发.运 ...

  4. python爬虫编程100例_哪种Python程序员最赚钱?爬虫数据告诉你!

    世界上有三种宝贵的东西: 知识.粮食和友谊. 那么,1 块钱,你能买到什么呢? 骑一次共享单车 买 2 包辣条 1/190 件格子衬衫 1/299 支口红 1/10099 个 iPhone XS 但是 ...

  5. 学python能赚钱吗-哪种Python程序员最赚钱?爬虫数据告诉你!

    世界上有三种宝贵的东西: 知识.粮食和友谊. 那么,1 块钱,你能买到什么呢? 骑一次共享单车 买 2 包辣条 1/190 件格子衬衫 1/299 支口红 1/10099 个 iPhone XS 但是 ...

  6. 2022 年 Python 程序员值得学习的 8 种工具

    哈喽大家好!我是IT界搬运喵. 马上2022年,如果想在新的一年成为一名更好的 Python 开发人员,并正在寻找用于 Python 开发的最佳工具.库和最佳 IDE,那么你来对地方了. 今天,我将给 ...

  7. python程序员兼职平台-用Python拓展副业的几种方式

    Python是当下最火的编程语言之一,除了成为一名Python程序员之外,我们能否将Python作为自己的副业利器呢?答案是肯定的,本文就给大家介绍一些可以用Python赚零花钱的一些方法,这几种都是 ...

  8. 薪资不如 Java、C,BAT 需求大,揭秘 Python 程序员跳槽现状!

    作者 | 雨蹊 本文经授权转载自100offer(ID:im100offer) 「人生苦短,快用Python」,这话曾是不少选择投入Python麾下的「码农」们的一句调侃和自我标榜. 与敏捷开发.大数 ...

  9. 知乎热议:28岁Python程序员年薪60W+,被知名大厂、国企疯抢,凭什么

    你的28岁在干嘛? 同样是打工:有人28岁还在苦苦谋求一份大厂offer,而有的人28岁早已实现财务自由,选择退休! 最近在后台看到有很多粉丝留言: "马上就到年底了,一堆报告要数据可视化表 ...

最新文章

  1. R语言聚类分析之层次聚类(hierarchical clustering)实战
  2. mencoder视频旋转
  3. 思路,如何快速应对客户提出的业务需求
  4. 一个前端开发人员多年苦心搜集的Chrome开发者工具使用技巧
  5. python连接wws协议和http协议时ssl验证失败
  6. svn 服务器端怎么增加用户,svn+ssh方式svn服务器和客户端的配置[转载]
  7. php显示当前访问人数,PHP与jquery实时显示网站在线人数实例详解
  8. 卢伟冰:Redmi K30 Pro的主板可能是业内最复杂“三明治”主板设计
  9. MyBatis各个jar包的作用
  10. Java之数据类型的细节
  11. [置顶] Android仿人人客户端(v5.7.1)——应用主界面之左侧面板UI实现
  12. 从零实现一个3D建模软件
  13. Learning to Rank基于pairwise的算法(三)—— RankNet、FRank、LambdaRank
  14. Spring Boot:Canonical names should be kebab-case (‘-‘ separated), lowercase alpha-numeric characters
  15. iOS 开发者证书打包项目未包含最新的UDID
  16. 【数据库认证】OCM准备及考试经验总结
  17. dim c语言,编程基础-C程序的组成
  18. 100个开源C/C++项目中的bugs(一)数组和字符串处理的错误
  19. Java游戏宋朝角色扮演_穿越历史并不现实,但是有这样一款游戏,带你回到宋朝...
  20. SAP用户应该知道的销售订单(协议)的重要控制逻辑

热门文章

  1. 项目上线就炸,这谁受得了
  2. 计算机分支结构语句的实验报告,c语言 实验报告三 分支结构程序设计
  3. 【转】2016年值得关注的十个微信公众号
  4. SpringMVC教程(八)
  5. Unity webgl发布微信小游戏
  6. 时间的几个实用函数 FILETIME UnixTime的转换
  7. 2015年阿里笔试题
  8. 小麦积分墙:应用盈利应用推广解决方案分享
  9. 华为交换机如何导出配置信息_华为交换机作为服务端备份配置文件
  10. AWS 负载均衡导入ECC证书