46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
# 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*
|