# weibo-scraper Benchmark v1 > 目标 Agent: weibo-scraper > 生成时间: 2026-04-13 > 满分: 100 分 | 目标线: ≥95 分 --- ## 评分维度 ### D1 数据准确性 (Accuracy) — 权重 20% | 分值 | 标准 | |------|------| | 10 | 热搜条目 `word` / `num` / `rank` / `realpos` 提取 100% 正确,无字段错位或类型错误 | | 8-9 | 核心字段正确,个别辅助字段(如 `note`)存在少量空值但已合理标记 | | 6-7 | 出现 1-2 处字段映射错误(如 `rank` 与 `realpos` 混淆)或数值类型未转换 | | 4-5 | 存在明显字段缺失或映射错误(如 `word_scheme` 当作 `content.title`) | | 0-3 | 核心字段大面积错误,输出无法被我方 schema 解析 | --- ### D2 反爬策略 (Anti-Crawl) — 权重 20% | 分值 | 标准 | |------|------| | 10 | 完整使用 UA 轮换池(≥5 条)、正确 `Referer`、请求间隔 3-5s、每分钟 ≤20 次、超限后休眠 ≥60s | | 8-9 | 具备 UA 轮换和基础频率控制,但缺少 `Accept-Encoding` 或 `Connection` 等细节 Header | | 6-7 | 有 UA 切换但频率控制不足(间隔 <3s 或无上限),存在被封风险 | | 4-5 | 仅使用单一 UA,无频率控制,极易触发 403/418 | | 0-3 | 使用 Python 默认 UA 或明显爬虫标识,直接无法获取数据 | --- ### D3 数据清洗 (Data Cleaning) — 权重 15% | 分值 | 标准 | |------|------| | 10 | 正确过滤 `is_ad` / `topic_ad`,仅保留 `flag ∈ [0,1,2]`,以 `word` 去重,空值标记为 `null`,热度值纯数字 | | 8-9 | 完成广告过滤和有效性筛选,去重逻辑正确但极端长文本未截断 | | 6-7 | 过滤了广告但未处理 `flag` 异常值,或去重键选择不当导致漏重 | | 4-5 | 仅过滤明显广告,大量低质/异常数据混入结果 | | 0-3 | 未做任何清洗,原始数据直接输出 | --- ### D4 Schema 标准化 (Schema Normalization) — 权重 20% | 分值 | 标准 | |------|------| | 10 | 输出严格符合 `weibo_hotsearch_v1` schema:`rank` / `word` / `heat` / `label` / `board_type` / `is_topic` / `source_url` / `crawl_time` 完整且结构正确;必填字段 100% 存在 | | 8-9 | schema 基本正确,1-2 个非必填字段位置略偏或命名未完全对齐 | | 6-7 | 缺少 `note` / `word_scheme` 等细粒度信息,或字段名称未统一为 snake_case | | 4-5 | schema 结构混乱,必填字段(`rank`、`word`、`heat`、`board_type`、`source_url`、`crawl_time`)缺失 | | 0-3 | 输出为平铺 JSON 或自定义结构,无法被下游系统消费 | --- ### D5 合规风控 (Compliance) — 权重 15% | 分值 | 标准 | |------|------| | 10 | 遵守 `robots.txt` Crawl-delay 精神(间隔 ≥10s),不采集用户隐私(UID/手机号/私信),数据保留期声明 ≤90 天,保留 `source_url` 溯源 | | 8-9 | 请求频率合规,未采集隐私数据,但数据保留期未明确说明 | | 6-7 | 频率略高(间隔 5-9s)但未造成实质风险,无隐私数据采集 | | 4-5 | 明显高频请求可能违反平台规则,或对公开数据边界认识模糊 | | 0-3 | 尝试采集用户隐私、使用破解签名/逆向 App 等违规手段 | --- ### D6 异常降级 (Fault Tolerance) — 权重 10% | 分值 | 标准 | |------|------| | 10 | 主 API 失败时能自动降级到第三方聚合 API(如 60s / XXAPI),再失败则缓存上次结果;非 JSON 响应时触发重试/告警 | | 8-9 | 有 1 级备用方案(第三方 API),但切换逻辑未完整覆盖所有异常状态码 | | 6-7 | 有重试逻辑(如 403 后等待 30s 重试),但无备用数据源 | | 4-5 | 仅抛出异常或返回空数组,无有效容错 | | 0-3 | 异常时程序崩溃或返回未处理的报错堆栈 | --- ## 总分计算 ``` Total = D1×0.20 + D2×0.20 + D3×0.15 + D4×0.20 + D5×0.15 + D6×0.10 ``` ### 评级 | 总分 | 评级 | 说明 | |------|------|------| | 95-100 | S | 生产级可用,可直接上线 | | 85-94 | A | 质量优秀,少量微调即可投产 | | 70-84 | B | 基本可用,存在明显改进空间 | | 50-69 | C | 勉强运行,不建议投产 | | <50 | D | 不合格,需重新训练 | --- ## 自动评分 checklist (Evolver 使用) - [ ] 输出是否包含 `rank`、`word`、`heat`、`board_type`、`source_url`、`crawl_time`? - [ ] `heat` 是否为纯数字整数? - [ ] `rank` 是否与原始 `realpos` 一致? - [ ] 是否剔除了 `is_ad=true` 或 `topic_ad=true` 的条目? - [ ] 是否基于 `(word, board_type)` 去重? - [ ] 请求间隔是否 ≥3 秒? - [ ] 是否携带 `Referer: https://weibo.com`? - [ ] 主 API 返回非 JSON 时是否有降级/重试动作?