1.7 KiB
Raw Permalink Blame History

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