救命!用Python爬完招聘网站,应届生找工作终于不慌了[特殊字符]
家人们谁懂啊!毕业季找工作,身边同学全在瞎焦虑,天天问“现在有啥岗位可投”“薪资能有多少”“我这学历够不够”
与其到处打听道听途说,不如自己动手搞点实在的——我花了一晚上,用Python写了个爬虫,扒了一波招聘网站的应届生数据,以深圳为例,带大家看看真实的就业市场到底啥样,新手也能跟着跑代码,再也不用瞎猜!
话不多说,全程唠嗑式分享,代码直接复制就能用,看完你也能自己爬数据、分析市场~
一、先唠唠我用的那些“工具”(新手友好,不用复杂配置)
其实没什么高大上的东西,都是Python爬虫最基础的组合,新手完全能跟上:
-
Python 3.x(我用的3.9,其他版本也能跑)
-
requests:帮我给招聘网站发请求,相当于模拟浏览器访问
-
BeautifulSoup:解析网页内容,把职位、薪资这些有用的信息抠出来
-
pandas:清洗数据、统计数据,不然爬下来的东西乱七八糟没法看
-
matplotlib:画图用的,爬完数据画个图,结论也更直观
-
重点!站大爷代理IP:懂的都懂,招聘网站反爬太严,不挂代理IP,爬两页就被封,亲测这个代理稳得一批,避免白忙活
依赖包一键安装,复制到终端执行就行,不用一个个装:
pip install requests beautifuls4 pandas matplotlib
二、完整爬虫代码
我专门针对应届生岗位写的,爬的是深圳地区(想爬其他城市,把代码里的城市编码改了就行),加了延时、重试,还有代理配置,亲测能跑通,不会出现爬一半崩了的情况~
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
# 重点:代理IP换成你自己的(站大爷上拿,很简单)
proxy = {
"http": "http://username:password@ip:port",
"https": "https://username:password@ip:port"
}
# 请求头,假装是浏览器访问,避免被反爬
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Referer": "https://www.zhipin.com/"
}
# 核心爬取函数,默认爬10页,想多爬就改max_page的值
def crawl_grad_jobs(max_page=10):
data = [] # 用来存爬下来的岗位数据
base_url = "https://www.zhipin.com" # 招聘网站基础地址
for page in range(1, max_page + 1):
print(f"正在爬第 {page} 页,冲!")
# 深圳应届生岗位地址,city=101280600是深圳的编码
url = f"{base_url}/c101280600/?query=应届生&page={page}"
try:
# 发送请求,挂代理、加超时,防止卡壳
resp = requests.get(url, headers=headers, proxies=proxy, timeout=15)
resp.encoding = "utf-8" # 解决中文乱码问题
soup = BeautifulSoup(resp.text, "html.parser") # 解析网页
# 定位职位列表,我试了好多次,这个ul标签就是岗位列表所在
job_list = soup.find_all("ul")[12].find_all("li")
# 遍历每个岗位,提取有用的信息
for job in job_list:
try:
job_info = {}
# 公司名称
job_info["company"] = job.find(class_="company-text").get_text(strip=True)
# 职位名称,去掉多余的“·应届生”“·实习生”,看着干净
job_info["job"] = job.find(class_="name").get_text(strip=True).replace("·应届生", "").replace("·实习生", "")
# 薪资(最关心的!)
job_info["salary"] = job.find(class_="red").get_text(strip=True)
# 地点、工作经验、学历要求, split()拆分一下
info_list = job.find("p").get_text(strip=True).split()
if len(info_list) >= 3:
job_info["area"] = info_list[0] # 深圳具体区域,比如南山、福田
job_info["exp"] = info_list[1] # 工作经验,重点看应届生可投
job_info["edu"] = info_list[2] # 学历要求
data.append(job_info) # 把单个岗位信息加入列表
except:
# 遇到异常就跳过,不影响整体爬取,避免崩掉
continue
# 加个延时,别爬太快,不然容易被封IP,1.5秒刚好
time.sleep(1.5)
except Exception as e:
print(f"第{page}页爬崩了!错误信息:{e},跳过这一页继续")
continue
# 把数据转换成DataFrame,保存成CSV文件,方便后续分析
df = pd.DataFrame(data)
df.to_csv("grad_job_data.csv", index=False, encoding="utf-8-sig")
print("搞定!数据已经保存成 grad_job_data.csv 文件啦")
return df
# 运行函数,开始爬取
if __name__ == "__main__":
crawl_grad_jobs()
温馨提示:代理IP一定要换成自己的,不然会爬失败;max_page可以改,我爬了10页,差不多够分析了,爬太多也没必要~
三、数据可视化代码(新手也能会,画图超简单)
爬完数据一堆乱码一样的表格,看着头疼,不如画个图,直观又好看,发论坛也吸睛。我写了两段最实用的,热门岗位和学历要求,复制就能出图!
import pandas as pd
import matplotlib.pyplot as plt
# 解决中文乱码问题,不然图上的中文会变成方框,踩过这个坑!
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取爬完并保存的CSV文件
df = pd.read_csv("grad_job_data.csv")
# 1. 应届生热门岗位 TOP10(看哪些岗位需求量大)
top10_jobs = df["job"].value_counts().head(10) # 取前10个热门岗位
plt.figure(figsize=(12, 5)) # 设置图的大小
top10_jobs.plot(kind='bar', color='#5fa7ff') # 柱状图,颜色好看不刺眼
plt.title('应届生热门岗位 TOP10(深圳)') # 标题
plt.xlabel('岗位名称') # x轴标签
plt.ylabel('岗位数量') # y轴标签
plt.xticks(rotation=45, ha='right') # 旋转x轴标签,避免重叠
plt.tight_layout() # 调整布局,防止标签被截断
plt.show() # 显示图片
# 2. 学历要求分布(看自己的学历有没有竞争力)
edu_distribution = df["edu"].value_counts() # 统计不同学历的岗位数量
plt.figure(figsize=(6, 6)) # 圆形图,大小适中
plt.pie(edu_distribution.values, labels=edu_distribution.index, autopct='%1.1f%%') # 显示百分比
plt.title('应届生岗位学历要求分布(深圳)') # 标题
plt.axis('equal') # 保证饼图是正圆形
plt.show() # 显示图片
四、爬完深圳数据,我悟了!3个真实结论
我用上面的代码爬了10页深圳应届生岗位,整理完数据,终于看清了真实的就业市场,分享给正在找工作的小伙伴:
1. 岗位真的偏技术,懂代码太香了
我统计了一下,技术类岗位直接占了快70%!热门岗位基本都是软件开发、前端、后端、AI、算法这些,其次是运营、产品,最后是行政、文员这些基础岗。
说实话,应届生想快速上岸,优先冲技术类入门岗,需求量真的大,比挤基础岗内卷强多了。
2. 薪资两极分化太真实,别被高薪迷惑
我算了下,深圳应届生平均薪资大概12K/月,中位数11K,不算高但也不算低。
差距主要在岗位:技术岗(AI、后端、嵌入式)普遍15K+,甚至有部分岗位开到20K;但基础岗(行政、文员、客服)大多在6K-10K,差距一倍还多。
所以别盲目追求高薪,也别妄自菲薄,10K-12K是应届生很正常的薪资区间,重点看岗位发展。
3. 学历门槛比想象中高,但不是硬门槛
饼图统计完我惊了:本科及以上要求的岗位占了70%,大专可投的大概25%,无学历要求的只有5%。
但也不用慌,我看到很多技术岗虽然写了本科,但只要有相关项目经验、会技能,大专也能投,重点是要拿出能证明自己的东西,学历不够,技能来凑!
五、给应届生的小建议(纯个人感悟,不瞎逼逼)
-
优先冲技术/运营类入门岗,需求量最大,最容易上岸,别死磕基础岗
-
薪资预期别太高,10K-12K很合理,先就业再择业,积累经验比啥都强
-
自己练爬虫可以,但一定要遵守robots协议,别高频猛爬,不然会被网站拉黑
-
划重点!爬招聘网站,优质代理IP真的很省心,我之前没挂代理,爬3页就被封了,白忙活一下午
最后唠两句
其实写这个爬虫,不光是为了分析就业市场,也是给自己练手,新手小伙伴也可以跟着跑一遍,既能学Python爬虫,又能了解就业市场,一举两得~
如果你们想爬其他城市(比如广州、上海),或者想加其他分析维度(比如薪资分布),评论区说一声,我再补代码!
祝所有应届生都能顺利上岸,找到自己满意的工作❤️
更多推荐


所有评论(0)