Skip to content
KimHoLauPublic

About

抓取 Boss直聘(zhipin.com)发布的招聘信息, 以网页表格展示, 一键导出 PDF / CSV

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Job Catch · Boss直聘职位抓取小工具

image

抓取 Boss直聘(zhipin.com)发布的招聘信息, 以网页表格展示, 一键导出 PDF / CSV。 数据仅保存在本地 data/jobs.json, 不上传任何服务器。

┌──────────────┐   DrissionPage 本机浏览器    ┌───────────────┐
│  Boss直聘     │ ─── 监听 joblist.json ───→  │ scraper.py     │
│  搜索结果页    │     (DOM 解析兜底)           │ 规范化/去重     │
└──────────────┘                             └──────┬────────┘
                                                    ↓ storage.py (data/jobs.json)
                                  ┌─────────────────────────────────┐
                                  │ server.py (Flask, 127.0.0.1:8765)│
                                  │  表格展示 / 筛选排序 / 抓取调度     │
                                  │  导出 PDF(reportlab) / CSV       │
                                  └─────────────────────────────────┘

功能

  • 抓取: 输入职位关键词 + 城市 + 页数, 自动打开浏览器翻页抓取(每页约 30 条), 按链接去重后合并入库
  • 表格展示: 网页端表格, 支持关键词筛选(职位/公司/技能/地区)、点击列头排序、薪资估算均值统计
  • 导出 PDF: 横版 A4 报表, 中文表格排版(表头深蓝、斑马纹、薪资橙色高亮、职位名可点击跳转), 导出范围跟随当前筛选词
  • 导出 CSV: UTF-8 BOM 编码, Excel 双击打开不乱码
  • 登录态复用: 登录一次保存在 auth/profile, 之后无需重复扫码
  • 反风控: 使用 DrissionPage 驱动本机 Chrome/Edge(原生 CDP 按需通信), 不启用会被 Boss 风控识别的自动化接口

环境要求与安装

  • Windows / macOS / Linux,Python 3.9+(开发环境为 3.14)
cd Job-Catch
pip install -r requirements.txt

国内网络加速(可选):

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

无需再单独安装浏览器内核, 抓取直接使用你电脑上已装的 Chrome/Edge。

快速开始

python server.py

启动后自动打开 http://127.0.0.1:8765:

  1. 填写职位关键词、选择城市、设置页数, 点击 开始抓取;
  2. 工具会先打开 Boss直聘首页(优先使用你电脑上已装的 Chrome/Edge), 未登录时在窗口里扫码登录即可, 登录成功后自动开始抓取; 首次登录之后长期复用;
  3. 如搜索页弹出安全验证, 在窗口里手动完成, 工具会自动继续;
  4. 抓取完成后表格自动刷新, 可筛选、排序, 点击 导出 PDF / 导出 CSV 下载。

也可以只抓取不开界面:

python catch.py "Python" 深圳 3     # 关键词 城市(可选, 默认全国) 页数(可选, 默认1)

城市参数支持内置中文名: 全国/北京/上海/深圳/广州/杭州/成都/南京/武汉/西安/长沙/重庆/郑州/天津/合肥/厦门, 也支持直接填 Boss直聘城市代码(在官网切换城市后从地址栏 city= 参数获取, 如 101280600)。

导出说明

  • PDF: 导出的是"当前数据 + 当前筛选词"的结果; 想只导出某类职位, 先在筛选框输入关键词再点导出
  • CSV: 列含 职位/薪资/地区/经验/学历/技能/公司/行业/规模/融资/招聘者/链接/抓取时间 等 16 列
  • 抓取失败或结果异常时, debug/ 目录会自动保存当时的页面快照(HTML + 截图), 便于排查

项目结构

Job-Catch/
├── server.py          # Flask 服务: 网页界面 + API + 抓取调度(主入口)
├── catch.py           # 命令行抓取入口
├── scraper.py         # DrissionPage 抓取: 接口监听为主, DOM 解析兜底, 薪资解析
├── storage.py         # 本地存储 data/jobs.json(去重/合并/CSV)
├── pdf_export.py      # PDF 报表生成(reportlab, 中文字体自动回退)
├── templates/         # 网页模板
├── static/            # 前端样式与逻辑(原生 JS, 无需构建)
├── data/jobs.json     # 抓取结果(运行后生成)
└── auth/profile/      # 浏览器登录态(运行后生成, 登录一次即可)

常见问题

  • 登录窗口一片空白(旧版 Playwright 方案的问题): Boss直聘的风控能识别 Playwright 这类全量接管 CDP 的自动化特征, 命中后页面会被主动跳成 about:blank。现已改用 DrissionPage 驱动本机浏览器, 登录界面可正常显示; 若你仍停留在旧版本, 请执行 pip install -r requirements.txt 升级后重试
  • 窗口一直闪 / 页面刷个不停, 没法扫码: 这是未登录直闯搜索页触发了风控的"验证刷新循环"。现已修复: 先在首页登录、优先使用本机 Chrome/Edge。若仍遇到, 先关闭任务栏里残留的抓取浏览器窗口(标题空白的 Chrome/Edge)再重试
  • 一直提示"检测到登录/安全验证": 在弹出的浏览器窗口里扫码登录/拖动验证即可, 完成后自动继续; 登录态会记住, 下次不再需要
  • 抓到 0 条: 可能是关键词在该城市无结果, 或触发了验证; 看 debug/ 里的页面快照确认
  • 城市代码不对/想加城市: 在 Boss直聘官网切到目标城市, 复制地址栏 city= 后的数字, 抓取时直接填该代码
  • 端口被占用: 修改 server.py 末尾的 port=8765
  • PDF 中文乱码(极少数精简版系统): 工具会自动回退到内置 CID 字体; 也可自行安装微软雅黑

使用注意

  • 本工具仅供个人求职检索使用, 请勿用于商业用途或批量转售数据
  • 请控制抓取频率(工具已内置每页 2.5~4.5 秒随机等待, 页数上限 10 页), 遵守 Boss直聘用户协议与 robots 约定
  • 抓取的职位信息版权归 Boss直聘及发布方所有

About

抓取 Boss直聘(zhipin.com)发布的招聘信息, 以网页表格展示, 一键导出 PDF / CSV

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages