跳到主要内容
Python AI 算法
基于 1300+ 招聘数据分析:自学 Python 的就业门槛与要求 综述由AI生成 通过分析拉钩网 1300+ 条 Python 招聘信息,探讨了自学 Python 的就业门槛。数据显示,北京、上海、深圳、杭州是主要需求城市,本科及以上学历及 1-5 年经验最受青睐。技能方面,除 Python 外,后端、MySQL、爬虫及算法能力是高频要求。薪资普遍在 20K-35K 区间。文章建议学习者不仅限于语法,需结合数据库与算法,并通过项目积累实战经验,同时做好长期学习的心理准备。
2177283801 发布于 2025/2/6 更新于 2026/4/26 7 浏览自学 Python 到什么程度能找到工作?
随着移动互联网的发展以及机器学习等热门领域带给人们的冲击,越来越多的人开始学习 Python。无论你是科班出身还是非科班转行,Python 无疑都是非常适合入门计算机世界的第一语言。其语法简洁,程序易懂,遵循「简单优雅」的哲学,在保证代码可读的基础上,用尽可能少的代码完成想法。
那么,学到什么程度可以找工作呢?实践是检验真理的唯一标准,当然得看市场需求。毕竟企业招人是来工作的,而不是让你来带薪学习的。
今天我们就试着爬取拉钩网关于 Python 的招聘信息,来看看市场到底需要什么样的人才。
一、网页结构分析
打开拉钩网首页,输入关键字「Python」,接着按 F12 打开网页调试面板,切换到「Network」选项卡下,过滤条件选上「XHR」。一切准备就绪之后点击搜索,仔细观察网页的网络请求数据。
从这些请求中我们可以大致猜测到数据好像是从 jobs/positionAjax.json 这个接口获取的。
可以看出,这些数据是通过 POST 请求获取的,Form Data 中的 pn 就是当前页码了。好了,网页分析好了,接下来就可以写爬虫拉取数据了。
import requests
import time
def headers_to_dict (headers_str ):
lines = headers_str.strip().split('\n' )
return {k: v for k, v in (line.split(': ' , 1 ) for line in lines)}
url = 'https://www.lagou.com/jobs/positionAjax.json?px=new&needAddtionalResult=false'
headers_str = """
accept: application/json, text/javascript, */*; q=0.01
origin: https://www.lagou.com
referer: https://www.lagou.com/jobs/list_python?px=new&city=%E5%85%A8%E5%9B%BD
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
"""
headers_dict = headers_to_dict(headers_str)
def get_data_from_cloud (page ):
params = {
'first' : 'false' ,
'pn' : page,
'kd' : 'python'
}
response = requests.post(url, data=params, headers=headers_dict, timeout=3 )
result = response.text
write_file(result)
for i in ( ):
get_data_from_cloud(i + )
range
76
1
程序写好之后,满怀期待地按下运行按钮,然而得到的结果数据很大可能是这样的反爬提示:
{ "success" : true , "msg" : null , "code" : 0 , "content" : { "showId" : "8302f64" , "hrInfoMap" : { } , "status" : false , "msg" : "您操作太频繁,请稍后再访问" , ...} }
这是因为拉勾网做了反爬虫机制。对应的解决方案就是不要频繁爬取,每次获取到数据之后适当停顿,比如每两个请求之间休眠 3 秒,然后请求数据时再加上 cookie 信息。完善之后的爬虫程序如下:
import requests
import time
def string_util_headers_to_dict (headers_str ):
lines = headers_str.strip().split('\n' )
return {k: v for k, v in (line.split(': ' , 1 ) for line in lines)}
home_url = 'https://www.lagou.com/jobs/list_python?px=new&city=%E5%85%A8%E5%9B%BD'
url = 'https://www.lagou.com/jobs/positionAjax.json?px=new&needAddtionalResult=false'
headers_str = """
accept: application/json, text/javascript, */*; q=0.01
origin: https://www.lagou.com
referer: https://www.lagou.com/jobs/list_python?px=new&city=%E5%85%A8%E5%9B%BD
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
"""
headers_dict = string_util_headers_to_dict(headers_str)
def get_data_from_cloud (page ):
params = {
'first' : 'false' ,
'pn' : page,
'kd' : 'python'
}
s = requests.Session()
s.get(home_url, headers=headers_dict, timeout=3 )
cookie = s.cookies
response = requests.post(url, data=params, headers=headers_dict, cookies=cookie, timeout=3 )
result = response.text
write_file(result)
def get_data ():
for i in range (76 ):
page = i + 1
get_data_from_cloud(page)
time.sleep(5 )
不出意外,这下可以获得全部数据,总共 1131 条。
二、数据清洗 上文我们将获取到的 json 数据存储到了 data.txt 文件中,这不方便后续的数据分析操作。我们准备用 pandas 对数据做分析,所以需要做一下数据格式化。
import json
import pandas as pd
def get_data_from_file ():
with open ('data.txt' ) as f:
data = []
for line in f.readlines():
result = json.loads(line)
result_list = result['content' ]['positionResult' ]['result' ]
for item in result_list:
dict_item = {
'city' : item['city' ],
'industryField' : item['industryField' ],
'education' : item['education' ],
'workYear' : item['workYear' ],
'salary' : item['salary' ],
'firstType' : item['firstType' ],
'secondType' : item['secondType' ],
'thirdType' : item['thirdType' ],
'skillLables' : ',' .join(item['skillLables' ]),
'companyLabelList' : ',' .join(item['companyLabelList' ])
}
data.append(dict_item)
return data
data = get_data_from_file()
df = pd.DataFrame(data)
print (df.head(15 ))
三、数据分析 获取数据和清洗数据只是手段,最终目的是要通过获取到的招聘数据挖掘出招聘方的需求,以此为目标来不断完善自己的技能图谱。
1. 城市分布 先来看看哪些城市的招聘需求最大。这里我们只取 Top15 的城市数据。
from pyecharts import Bar, Pie, opts
top = 15
citys_value_counts = df['city' ].value_counts()
citys = list (citys_value_counts.head(top).index)
city_counts = list (citys_value_counts.head(top))
bar = (
Bar()
.add_xaxis(citys)
.add_yaxis("" , city_counts)
)
bar.render_notebook()
由图表可以看出,北京基本占据了四分之一还多的招聘量,其次是上海、深圳、杭州。单单从需求量来说,四个一线城市中广州被杭州所代替。这也就从侧面说明了我们为啥要去一线城市发展了。
2. 学历要求 edu_value_counts = df['education' ].value_counts()
edu = list (edu_value_counts.index)
edu_counts = list (edu_value_counts)
pie = (
Pie()
.add("" , [list (z) for z in zip (edu, edu_counts)])
.set_global_opts(title_opts=opts.TitleOpts(title="学历分布" ), legend_opts=opts.LegendOpts(is_show=False ))
)
pie.render_notebook()
看来大多公司的要求都是至少要本科毕业的,不得不说,当今社会本科基本上已经成为找工作的最低要求了(能力特别强的除外)。
3. 工作年限 work_year_value_counts = df['workYear' ].value_counts()
work_year = list (work_year_value_counts.index)
work_year_counts = list (work_year_value_counts)
bar = (
Bar()
.add_xaxis(work_year)
.add_yaxis("" , work_year_counts)
)
bar.render_notebook()
3-5 年的中级工程师需求最多,其次是 1-3 年的初级工程师。其实这也是符合市场规律的,这是因为高级工程师换工作频率远远低于初中级,且一个公司对高级工程师的需求量是远远低于初中级工程师的。但是发现 1 年以下的招的非常少,所以很多自学的同学都说入行难!
4. 行业分布 我们再来看看这些招聘方都属于哪些行业。因为行业数据不是非常规整,所以需要单独对每一条记录按照 , 作下切割。
industrys = list (df['industryField' ])
industry_list = [i for item in industrys for i in item.split(',' )]
industry_series = pd.Series(data=industry_list)
industry_value_counts = industry_series.value_counts()
industrys = list (industry_value_counts.head(top).index)
industry_counts = list (industry_value_counts.head(top))
pie = (
Pie()
.add("" , [list (z) for z in zip (industrys, industry_counts)])
.set_global_opts(title_opts=opts.TitleOpts(title="行业分布" ), legend_opts=opts.LegendOpts(is_show=False ))
)
pie.render_notebook()
移动互联网行业占据了四分之一还多的需求量,这跟我们的认识的大环境是相符合的。
5. 技能要求 from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
word_data = df['skillLables' ].str .split(',' ).apply(pd.Series)
word_data = word_data.replace(np.nan, '' )
text = word_data.to_string(header=False , index=False )
wc = WordCloud(font_path='/System/Library/Fonts/PingFang.ttc' , background_color="white" , scale=2.5 , contour_color="lightblue" ).generate(text)
plt.figure(figsize=(16 , 9 ))
plt.imshow(wc)
plt.axis('off' )
plt.show()
除去 Python,出现最多的是后端、MySQL、爬虫、全栈、算法等 。这意味着单纯掌握 Python 语法是不够的,必须结合数据库和特定业务场景。
6. 薪资水平 salary_value_counts = df['salary' ].value_counts()
top = 15
salary = list (salary_value_counts.head(top).index)
salary_counts = list (salary_value_counts.head(top))
bar = (
Bar()
.add_xaxis(salary)
.add_yaxis("" , salary_counts)
.set_global_opts(xaxis_opts=opts.AxisOpts(name_rotate=0 , name="薪资" , axislabel_opts={"rotate" : 45 }))
)
bar.render_notebook()
大部分公司给出的薪资还是很可观的,基本都在 20K-35K 之间,只要你技术过关,很难找不到满意薪酬的工作。
7. 福利待遇 word_data = df['companyLabelList' ].str .split(',' ).apply(pd.Series)
word_data = word_data.replace(np.nan, '' )
text = word_data.to_string(header=False , index=False )
wc = WordCloud(font_path='/System/Library/Fonts/PingFang.ttc' , background_color="white" , scale=2.5 , contour_color="lightblue" ).generate(text)
plt.figure(figsize=(16 , 9 ))
plt.imshow(wc)
plt.axis('off' )
plt.show()
年底双薪、绩效奖金、扁平化管理。都是大家所熟知的福利,其中扁平化管理是互联网公司的特色。不像国企或者其他实体企业,上下级观念比较重。
四、总结与建议 今天我们抓取了拉钩网 1300+ 条关于 Python 的招聘数据,对这批数据分析之后我们得出如下结论:
学历门槛 :你最好是本科毕业,市场对 1-5 年工作经验的工程师需求量比较大。
地域分布 :需求量最大的城市是北上深杭,建议优先选择这些一线城市发展。
行业趋势 :需求量最多的行业仍然是移动互联网,但人工智能、大数据方向也在增长。
技能组合 :大多数公司都要求除了 Python 基础外,还需掌握 MySQL、后端开发或算法相关技能。
薪资待遇 :只要技术过关,大部分公司给出的薪资还是很可观的,基本都在 20K-35K 之间。
夯实基础 :不仅仅只学 Python,还需要学习算法、数据库等相关知识。任何语言都是一样的,基础不牢,地动山摇。
项目驱动 :由于 1 年以下经验招聘较少,建议通过参与开源项目或构建个人作品集来弥补经验不足。
持续学习 :学好 Python 不论是就业还是做副业赚钱都不错。保持对新技术的敏感度,关注行业动态。
心态调整 :你现在走的路,也许是你人生中最困难的一段路,坚持下来总会有机会入行!
希望这份基于真实数据的分析能帮助你更好地规划学习路径,顺利找到心仪的工作。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online