家人们谁懂啊!毕业季找工作,身边同学全在瞎焦虑,天天问“现在有啥岗位可投”“薪资能有多少”“我这学历够不够”

与其到处打听道听途说,不如自己动手搞点实在的——我花了一晚上,用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爬虫,又能了解就业市场,一举两得~

如果你们想爬其他城市(比如广州、上海),或者想加其他分析维度(比如薪资分布),评论区说一声,我再补代码!

祝所有应届生都能顺利上岸,找到自己满意的工作❤️

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐