【Python自动化爬虫】一键获取Boss直聘岗位招聘信息
精准拦截API数据流|12维度结构化存储|DrissionPage高级应用
🔥 功能简介
通过30行核心代码实现以下功能:
- 自动采集10页Java/测试岗位信息
- 精准解析薪资、融资情况、福利待遇等12个维度
- 输出标准CSV文件(bossdata_Java_测试.csv)
- 基于混合驱动模式绕过动态加载限制
🛠️ 技术亮点
API监听技术
精准捕获zpgeek接口- 智能转换数组字段(技能/福利)
- 企业信息全息解析(规模/融资/领域)
- 地理信息三级划分(城市→区域→街道)
- 自动化翻页系统
📥 使用方法
- 安装依赖:
pip install DrissionPage
- 浏览器路径配置(首次运行必需❗)
在任意Python环境中执行:
from DrissionPage import ChromiumOptions
# 修改为你的Chrome安装路径
path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
ChromiumOptions().set_browser_path(path).save() # 永久生效配置
- 创建爬虫文件
boss_spider.py
:
# 导入自动化模块
from DrissionPage import ChromiumPage
# 导入一个格式化输出模块
from pprint import pprint
# 导入csv
import csv
# 创建文件对象
f = open('bossdata_Java_测试.csv',mode='w',encoding='utf-8',newline='')
csv_writer = csv.DictWriter(f,fieldnames=[
'职位',
'城市',
'区域',
'街道',
'公司名',
'薪资',
'学历',
'领域',
'融资情况',
'规模',
'技能要求',
'福利'
])
# 写入表头
csv_writer.writeheader()
# 自动打开浏览器
dp =ChromiumPage()
# 监听数据包
dp.listen.start('wapi/zpgeek/search/joblist.json')
# 访问网站
dp.get('https://www.zhipin.com/web/geek/job?query=%E6%B5%8B%E8%AF%95%2Fjava&city=101200100')
# 循环翻页
for page in range(1,11):
print(f'正在采集第{page}页的内容')
# 下滑页面到底部
dp.scroll.to_bottom()
# 等待数据包加载
resp = dp.listen.wait()
# 获取响应数据
json_data = resp.response.body
# 提取职位信息
jobList = json_data['zpData']['jobList']
for i in jobList:
print(i)
# 提取相关数据,保存字典
dit = {
'职位':i['jobName'],
'城市':i['cityName'],
'区域':i['areaDistrict'],
'街道':i['businessDistrict'],
'公司名':i['brandName'],
'薪资':i['salaryDesc'],
'学历': i['jobDegree'],
'领域': i['brandIndustry'],
'融资情况': i['brandStageName'],
'规模': i['brandScaleName'],
'技能要求': ' '.join(i['skills']),
'福利': ' '.join(i['welfareList'])
}
# 写入数据
csv_writer.writerow(dit)
print(dit)
# 点击下一页
dp.ele('css:.ui-icon-arrow-right').click()
- 运行脚本:
python boss_spider.py
- 查看生成的CSV数据文件
🧠 代码解析
# API监听黑科技
dp.listen.start('wapi/zpgeek/search/joblist.json') # 精准捕获数据接口
# 分页采集系统
for page in range(1,11):
dp.scroll.to_bottom() # 触发页面懒加载
resp = dp.listen.wait() # 等待接口响应
# 数据加工流水线
for i in resp.response.body['zpData']['jobList']:
dit = {
'街道': i['businessDistrict'], # 三级地理信息
'融资情况': i['brandStageName'], # 企业资本解析
'技能要求': ' '.join(i['skills']), # 数组转字符串
# ...其他字段处理...
}
csv_writer.writerow(dit)
dp.ele('css:.ui-icon-arrow-right').click() # 特征翻页按钮
⚠️ 注意事项
- 必须配置浏览器路径(避免BrowserNotFoundError)
- 首次运行需同意浏览器驱动程序权限
- 控制采集速度为3秒/页以上(防封禁)
- 网站接口变动需更新JSON字段映射
- 不同岗位需修改URL的query参数:
# 替换query参数切换岗位
dp.get('https://www.zhipin.com/web/geek/job?query=python&city=101010100') # Python北京
实用工具请点赞收藏 ⭐
💡 数据样本展示:
职位 | 薪资 | 公司名 | 融资情况 | 技能要求 |
---|---|---|---|---|
Java开发 | 20-40k·14薪 | 字节跳动 | D轮及以上 | SpringCloud MySQL… |
测试工程师 | 15-25k | 华为 | 已上市 | 自动化测试 Python… |
免责声明:本工具仅用于学习交流,请遵守Boss直聘数据采集规范,禁止商业用途。