← 返回 Day 144 正文

Day 144 · 图解

Day 144 — 图解

1. 验证码分级熔断状态机

                    正常抓取
                       │ 命中验证码文案
                       ▼
              ┌── Level 1 ──┐  换代理 + 退避重试
              │  恢复成功?  │──是──▶ 回到正常抓取
              └──────┬──────┘
                     │ 否 / 被重定向到验证页
                     ▼
              ┌── Level 2 ──┐  暂停该域名 30 分钟
              │  暂停到期?  │──是──▶ 降回 Level 1 重试
              └──────┬──────┘
                     │ 否 / 429 明确限频
                     ▼
              ┌── Level 3 ──┐  停止任务 + 推送告警
              │  人工介入   │──确认后──▶ 手动复位
              └─────────────┘

2. 清洗管线数据流

raw_data.jsonl
   │
   ├─① 字段校验 ──── 缺字段/类型错 ──▶ 丢弃(计数 invalid)
   ├─② 文本归一化 ── NFKC → 去标签 → 反转义 → 压空白
   ├─③ 指纹去重 ──── sha256(规范标题+正文前500字)
   │                    已存在 ──▶ 丢弃(计数 duplicates)
   ▼
clean_data.jsonl + 清洗报告(成功率监控 → 触发告警)

3. 容器化部署视图

flowchart TD D[Docker Host] --> C1[crawler 容器<br>APScheduler 主进程<br>+ Playwright Chromium] D --> V[(volume /app/data<br>raw/clean jsonl + state)] C1 --> V C1 -- 失败率>阈值 --> W[钉钉/企微 Webhook]
flowchart TD
    D[Docker Host] --> C1[crawler 容器<br>APScheduler 主进程<br>+ Playwright Chromium]
    D --> V[(volume /app/data<br>raw/clean jsonl + state)]
    C1 --> V
    C1 -- 失败率>阈值 --> W[钉钉/企微 Webhook]