1.7 KiB
1.7 KiB
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 风险
- 重构期间打断在线爬虫 — 用 feature flag 并行新旧代码
- 签名代码复制粘贴 — 必须先提取共享包再改平台代码
- 反爬会话状态丢失 — SmartIPManager 在 FastAPI 中需做成单例
- ClickHouse 去重全表扫描 — 加 30 天时间窗口限制
- 无测试覆盖 — 签名函数是纯函数,最先写测试
建议阶段顺序
- 提取
crawler_core/共享包(解除代码重复) - 重写三平台爬虫客户端(基于统一基类)
- 重连后端 facade + 外部脚本
- 优化去重和公司清洗流程
- 测试覆盖 + 前端监控优化
Research synthesized: 2026-03-21