46 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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*