在求职和职场数据分析场景中,获取结构化的职位信息能为我们提供极大的便利 —— 无论是对比薪资水平、分析行业需求,还是研究企业招聘偏好,都需要可靠的数据源支持。本文将手把手教你用 Python 开发一个 Boss 直聘爬虫,通过监听网络请求的方式高效获取职位数据,并将结果保存为 Excel 文件。
一、开发前准备:环境与工具
在开始编码前,我们需要搭建好开发环境并明确核心依赖库的作用,确保后续开发过程顺畅。
1. 环境要求
- Python 3.8 及以上版本(推荐 3.10,兼容性更好)
- 浏览器:Chrome 或 Edge(需与 Chromium 内核驱动版本匹配)
2. 核心依赖库
本文爬虫主要依赖 4 个关键库,可通过 pip install 库名命令安装:
- DrissionPage:一款强大的浏览器自动化工具,支持控制浏览器、监听网络请求,无需手动配置 Selenium 驱动,上手门槛极低。
- pandas:数据分析领域的'瑞士军刀',用于将爬取到的字典数据转换为 DataFrame,并快速导出为 Excel。
- sqlalchemy:(本文未实际使用数据库存储,预留扩展接口)用于数据库连接,方便后续将数据存入 MySQL、PostgreSQL 等数据库。
- json:Python 内置库,用于解析接口返回的 JSON 格式数据。
二、爬虫核心逻辑拆解
本爬虫的核心思路是:模拟浏览器访问 Boss 直聘搜索页 → 监听后端返回职位数据的 API 接口 → 解析 JSON 数据提取关键字段 → 翻页循环采集 → 保存数据到 Excel。相比传统的'解析网页 HTML'方式,监听 API 接口能直接获取结构化数据,效率更高且稳定性更强。
下面我们按代码顺序逐步解析每个模块的作用。
1. 初始化与用户输入
首先通过 input() 函数获取用户想要爬取的职位关键词和页数,让爬虫更具灵活性。
import json
from time import sleep
from sqlalchemy import create_engine
import pandas as pd
from DrissionPage import ChromiumPage
# 接收用户输入:职位关键词和爬取页数
key = input('请输入你想爬取的职位信息')
mun = int(input('请输入你想爬取页数'))
# 实例化 Chromium 浏览器对象(自动启动浏览器)
dp = ChromiumPage()
2. 监听 API 接口:精准捕获数据来源
Boss 直聘的职位数据是通过异步请求加载的,我们通过 DrissionPage 的 listen 功能,精准监听返回职位列表的 API 接口,避免解析复杂的网页 DOM 结构。
# 访问 Boss 直聘搜索页:传入职位关键词,城市默认'全国'(city=100010000)
dp.get(f'https://www.zhipin.com/web/geek/job?query={key}&city=100010000')
ans = []


