Skip to content

eatmoreduck/boss-zhipin-scraper

Repository files navigation

BOSS直聘职位抓取工具 v2.0

Python License Platform Version

通过 Chrome CDP 协议抓取 BOSS直聘职位数据的命令行工具 + Hermes Agent Skill。

📌 一句话介绍:不用 Selenium/Playwright,直接通过 Chrome DevTools Protocol 连接本地已登录的 Chrome,复用真实登录态调搜索 API,输出含明文薪资的 JSON/CSV,并生成薪资分布、技能词频和求职材料优化提示词。


🚀 30 秒快速开始

# 1. 克隆 + 装依赖
git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
cd boss-zhipin-scraper
pip install -r requirements.txt          # 或 uv sync

# 2. 启动隔离 Chrome 并登录(只需一次,登录态持久保存)
python3 scripts/boss_cdp_raw.py --setup-chrome

# 3. 抓取 + 分析
python3 scripts/boss_cdp_raw.py --keyword "AI Agent" --city 上海 --pages 3 --analysis

# 4. 抓取后生成聚合摘要 + 提示词(默认读取最新结果)
python3 scripts/job_summary.py

抓完直接拿到:薪资分布、经验要求、高频技能词、求职材料优化提示词。提示词只基于岗位数据,不读取本地简历文件,也不给岗位算个人匹配分。

✨ 特性

  • 明文薪资(API 模式,绕过字体反爬)
  • JSON / CSV 双格式输出
  • 详情页 JD 抓取 + 技能分析
  • 抓取后聚合摘要 + 可复制提示词
  • 增量写入(异常退出不丢数据)
  • 一键环境检查 + 持久隔离 Chrome CDP profile
  • 多维筛选(规模、融资、薪资、经验、学历、行业)
  • macOS + Linux 支持(Windows 代码分支已预留,未经实测,不保证可用)

安装

方式 1:克隆到本地再安装(推荐)

由于 hermes skills install 的网络请求在某些环境下可能无法直接访问 GitHub,推荐先克隆仓库再本地安装:

# 1. 克隆仓库
git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
cd boss-zhipin-scraper

# 2. 复制到 Hermes skills 目录
mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts
cp SKILL.md ~/.hermes/skills/data-science/boss-zhipin-scraper/
cp scripts/boss_cdp_raw.py ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/
cp scripts/job_summary.py ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/

方式 2:curl 一键安装

不需要克隆整个仓库,直接下载必要文件:

mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts && \
curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md \
  -o ~/.hermes/skills/data-science/boss-zhipin-scraper/SKILL.md && \
curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/boss_cdp_raw.py \
  -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/boss_cdp_raw.py && \
curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/job_summary.py \
  -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/job_summary.py

方式 3:hermes skills install(需网络直连 GitHub)

hermes skills install https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md --category data-science

注意:此方式依赖 hermes 进程能直接访问 GitHub,如果遇到超时或连接失败,请使用方式 1 或 2。

验证安装

# 检查文件是否存在
ls ~/.hermes/skills/data-science/boss-zhipin-scraper/SKILL.md
ls ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/boss_cdp_raw.py
ls ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/job_summary.py

安装后直接在 Hermes 对话中说"帮我搜一下 BOSS直聘 上上海的 AI Agent 岗位"。

作为命令行工具使用

不想装成 Skill 也可以直接当 CLI 用:

# 1. 克隆 + 安装依赖
git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
cd boss-zhipin-scraper
pip install -r requirements.txt

# 2. 启动 Chrome CDP
python3 scripts/boss_cdp_raw.py --setup-chrome
# 首次使用也不会复制主 Chrome 登录态;请在弹出的 BOSS 专用浏览器中登录 zhipin.com
# setup 会等待登录完成,并确认接口能返回明文薪资

# 3. 检查环境
python3 scripts/boss_cdp_raw.py --check

# 可选:真实浏览器/API smoke test(不写结果文件)
python3 scripts/boss_cdp_raw.py --smoke-test

# 4. 抓取
python3 scripts/boss_cdp_raw.py --keyword "AI Agent" --city 上海 --pages 3 --format csv --analysis

# 5. 抓取后摘要和提示词
python3 scripts/job_summary.py --top 15

参数

参数 说明
--keyword 搜索关键词(默认 "AI Agent")
--city 城市(中文或代码,默认上海)
--pages 页数(上限 10)
--format json / csv;csv 会同时导出列表和详情 CSV
--detail 抓取详情页 JD(默认开启)
--no-detail 不抓取详情页
--analysis 分析报告
--merge FILE 合并已有数据(按 job_id 去重)
--allow-dom-fallback API 无数据时允许降级 DOM 提取;默认关闭,薪资可能不可信
--check 环境检查(CDP + 依赖 + 登录态)
--smoke-test 用真实 Chrome/CDP 跑一次 BOSS 搜索 API smoke test,不写结果文件
--setup-chrome 一键启动 Chrome CDP(持久隔离 profile)
--copy-login-state 手动导入主 Chrome 的 Local State + Cookie 相关文件到隔离 profile(默认、首次启动、重复启动都不复制)
--reset-chrome-profile 重建 BOSS 专用 Chrome profile,会清除此专用浏览器内的登录态
--no-wait-login --setup-chrome 启动后不等待登录完成
--login-timeout --setup-chrome 等待登录完成的秒数(默认 300)
--output 列表输出路径(默认 ~/.boss-zhipin-scraper/job-result/
--detail-output 详情输出路径(默认 ~/.boss-zhipin-scraper/job-result/
--cdp-port CDP 端口(默认 9222)
--scale/--salary/--experience/--degree 筛选条件

抓取后摘要与提示词

scripts/job_summary.py 只读取已抓取的 boss_jobs_*.jsonboss_details_*.json,做简单聚合分析并生成一段可复制提示词。它不读取本地简历文件,不引入 PDF 依赖,也不给个人与岗位做分数判断。

# 读取默认结果目录下最新的 boss_jobs_*.json,并自动匹配同时间戳或最新详情文件
python3 scripts/job_summary.py

# 指定列表和详情文件
python3 scripts/job_summary.py \
  --input ~/.boss-zhipin-scraper/job-result/boss_jobs_20260625_1200.json \
  --details ~/.boss-zhipin-scraper/job-result/boss_details_20260625_1200.json \
  --top 15

# 只输出提示词
python3 scripts/job_summary.py --prompt-only

打包安装后也可以使用入口命令:

uv run boss-summary --top 15

摘要会覆盖这些维度:薪资区间、经验要求、学历要求、地区分布、高频公司、技能标签、JD 高频词。提示词会要求模型基于这些统计去做简历关键词补齐、项目经历改写方向和面试准备清单,但明确要求不要虚构经历。

文件结构

boss-zhipin-scraper/
├── SKILL.md              # Hermes Skill 定义
├── README.md
├── CHANGELOG.md
├── LICENSE
├── pyproject.toml
├── scripts/
│   ├── boss_cdp_raw.py   # 抓取主脚本
│   └── job_summary.py    # 抓取后摘要 + 提示词
└── requirements.txt

工作原理

  1. 通过 Chrome DevTools Protocol (CDP) 连接到已打开的 Chrome
  2. 在 BOSS直聘页面内注入 JS,用同步 XHR 调用搜索 API
  3. API 返回明文 salaryDesc,绕过前端字体反爬
  4. 列表 API 保留 securityId / lid 等上下文,进入详情页时带上这些参数
  5. 每页抓完立即写入文件,按 job_id 去重

默认不会使用 DOM 提取列表,因为 DOM 薪资可能受字体反爬影响。只有明确传 --allow-dom-fallback 时,API 无数据才会降级 DOM。

--input ... --analysis --no-detail 会优先加载 --detail-output,其次加载与输入列表同目录、同时间戳的 boss_details_*.json,最后查找 ~/.boss-zhipin-scraper/job-result 下最新详情文件。

Chrome profile 安全策略

--setup-chrome 默认使用持久隔离 profile,不软链接、不复制你的主 Chrome 数据。首次启动和后续重复启动都只是创建或复用这个专用 profile:

  • ~/.boss-zhipin-scraper/chrome-profile

未显式指定 --output--detail-output 时,抓取结果默认保存到:

  • ~/.boss-zhipin-scraper/job-result

首次使用需要在这个专用 Chrome 中手动登录 BOSS直聘。--setup-chrome 会等待登录完成,并用搜索接口确认能拿到明文 salaryDesc 后再返回。登录态保存在专用 profile 内,重启机器后仍然保留;重复运行 --setup-chrome 不会清空它,也不会影响主 Chrome、Gmail、GitHub 等账号。

如确实需要从主 Chrome 手动导入 BOSS 登录态,可以显式运行:

python3 scripts/boss_cdp_raw.py --setup-chrome --copy-login-state

--copy-login-state 每次运行都会覆盖隔离 profile 内对应的 Cookie 相关文件;日常启动不要加这个参数。它只复制 Local StateDefault/Cookies*Default/Network/Cookies* 这类 Cookie 数据库相关文件,不复制密码库、历史记录、扩展或完整 profile。需要清空专用浏览器登录态时使用:

python3 scripts/boss_cdp_raw.py --setup-chrome --reset-chrome-profile

License

MIT

About

一个基于 Chrome CDP 的 BOSS直聘职位抓取工具,绕过字体反爬拿到明文薪资,输出 JSON/CSV。支持持久隔离 Chrome profile、筛选、详情页、增量写入,也可以作为 Hermes Agent Skill 使用。

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages