# Research Summary: 招聘数据爬虫重构 **Synthesized:** 2026-03-21 ## 核心技术决策 **保留:** `requests_go` (TLS 指纹伪装,反爬核心)、`httpx.AsyncClient` (后端异步调用)、ClickHouse + MySQL 双库架构 **新增:** `tenacity` (重试)、`pytest` + `respx` (测试) **避免:** 纯 `requests` (TLS 指纹暴露)、`aiohttp` (无指纹控制) ## 关键架构方案 **提取 `crawler_core/` 可安装共享包**,放在项目根目录,外部脚本和后端都从中导入。解决当前"复制粘贴+注释说明"的反模式。 **同步/异步边界:** 核心逻辑保持同步(`requests_go`),后端通过 `asyncio.to_thread()` 桥接。 **废弃 `jobs_spider/`:** 保留 `spiderJobs/`(结构更好的新框架)+ `crawler_core/`。 ## Table Stakes 功能 - 统一基类 (BaseFetcher/BaseSearcher) - 按唯一 ID 入库去重(30天窗口 + MergeTree 兜底) - 反爬延迟(10-20s随机)、代理轮换、TLS 指纹 - 分页断点续爬 + 进度汇报 - 关键词拉取分发 - 结构化日志 + 错误重试 ## Top 5 风险 1. **重构期间打断在线爬虫** — 用 feature flag 并行新旧代码 2. **签名代码复制粘贴** — 必须先提取共享包再改平台代码 3. **反爬会话状态丢失** — SmartIPManager 在 FastAPI 中需做成单例 4. **ClickHouse 去重全表扫描** — 加 30 天时间窗口限制 5. **无测试覆盖** — 签名函数是纯函数,最先写测试 ## 建议阶段顺序 1. 提取 `crawler_core/` 共享包(解除代码重复) 2. 重写三平台爬虫客户端(基于统一基类) 3. 重连后端 facade + 外部脚本 4. 优化去重和公司清洗流程 5. 测试覆盖 + 前端监控优化 --- *Research synthesized: 2026-03-21*