B站校招职位爬虫(DrissionPage版)使用指南
项目简介
本文档详细介绍B站职位爬虫工具test_drission.py的使用方法和运行流程。该工具基于DrissionPage框架开发,用于抓取B站校招和社招职位信息并保存为JSON格式数据。
技术栈
- 核心框架: DrissionPage (网页自动化与数据提取)
- 编程语言: Python 3.6+
- 主要依赖: json, time, random, argparse
项目地址
- Github: github.com/andychu46/c…
- Blog: blog.c1gstudio.com/
安装配置
环境要求
- Python 3.6或更高版本
- Chrome浏览器 (需与DrissionPage兼容)
安装步骤
- 克隆或下载项目代码到本地
- 安装依赖包:
pip install DrissionPage
运行方式
命令行参数说明
该工具支持以下命令行参数:
| 参数名 | 类型 | 可选值 | 默认值 | 描述 |
|---|---|---|---|---|
--type | 字符串 | social/campus | campus | 招聘类型,social表示社招,campus表示校招 |
--sleep | 浮点数 | 任意正数 | 1.0 | 页面抓取间隔时间(秒) |
--max-page | 整数 | 0或正整数 | 2 | 最大抓取页数,0表示不限制 |
运行示例
1. 爬取校招职位(默认)
python test_drission.py
2. 爬取社招职位
python test_drission.py --type social
3. 自定义抓取参数
python test_drission.py --type social --max-page 5 --sleep 2.5
上述命令表示:抓取社招职位,最多抓取5页,每页抓取间隔2.5秒。
运行流程
程序运行流程主要分为以下几个阶段:
1. 参数解析与初始化
- 解析命令行参数
- 根据招聘类型确定目标URL
- 初始化浏览器配置
2. 浏览器初始化(init_browser)
- 根据操作系统配置浏览器参数
- Linux系统默认启用无头模式,Windows系统默认显示浏览器窗口
- 配置用户代理、图片加载策略等
- 支持代理设置(默认未启用)
3. 页面获取与解析
- 获取列表页(
get_job_list_html): 请求目标URL并返回页面HTML - 获取最大页码(
get_max_page): 从分页控件提取总页数 - 获取职位卡片(
get_job_list_card): 定位页面中的职位卡片元素
4. 职位信息提取
- 列表信息提取(
get_job_list_info): 从职位卡片提取标题、地点、类别等基本信息 - 详情页获取: 模拟点击职位标题打开新窗口
- 详情信息提取(
get_position_detail): 从详情页提取职位描述、要求等详细信息
5. 数据处理与保存
- 整合列表信息和详情信息
- 保存为JSON格式文件(
save_job_list_data) - 文件命名格式:
bilibili_jobs_<type>.json
数据结构
抓取的职位数据包含以下字段:
{
"position_id": "职位ID",
"position_title": "职位标题",
"location": "工作地点",
"category": "职位类别",
"job_type": "工作类型",
"post_date": "发布日期",
"position_url": "职位链接",
"position_detail": {
"position_id": "职位ID",
"position_url": "职位链接",
"title": "职位标题",
"location": "工作地点",
"category": "职位类别",
"job_type": "工作类型",
"post_date": "发布日期",
"position_content": "职位描述与要求"
}
}
防反爬策略
- 随机请求间隔: 通过
--sleep参数控制请求频率 - 浏览器指纹伪装: 设置合理的User-Agent
- 模拟真实用户行为: 使用真实浏览器环境和点击操作
- 错误处理与重试机制: 关键步骤实现重试逻辑
常见问题解决方案
1. 浏览器启动失败
- 确保Chrome浏览器已安装
- 检查Chrome版本与DrissionPage兼容性
- 尝试添加
--no-sandbox参数
2. 页面加载超时
- 增加
--sleep参数值 - 检查网络连接
- 考虑使用代理服务器
3. 数据提取不完整
- 检查页面结构是否变化
- 查看
page_html_debug.html调试文件 - 调整元素定位选择器
代码优化建议
- 增加代理池支持: 提高大规模抓取稳定性
- 实现多线程并发: 提升抓取效率
- 添加数据库存储: 除JSON外支持直接存入数据库
- 完善日志系统: 增加详细的运行日志便于调试
- 添加异常捕获机制: 提高程序健壮性
注意事项
- 频繁抓取可能导致IP被暂时封禁,请合理设置抓取间隔
- 本工具仅供学习研究使用,请勿用于商业用途
- 遵守网站robots协议,尊重网站数据版权