← 返回专栏Skill
指挥 Agent 抓数据:可行性判断到结果验收
AI 工具Agent数据抓取
4 步·约 20 分钟·产出:可执行的 Agent 任务描述
让 AI agent 帮你抓数据、跨平台操作,听起来很美好——但现实是:目标网站有反爬、接口有签名、App 有 SSL Pinning,agent 经常跑着跑着就卡住了。
这篇不教你写代码,教你当指挥官:判断一个任务能不能做、怎么描述让 agent 不跑偏、结果怎么验收不被假数据骗到。
核心原则:任何任务都先小样 10 条 → 验收 → 再放量,永远不要一上来跑全量。
开始操作
可行性判断——这事能做吗
拿到一个抓数据的需求,先别急着动手。用这张评分卡快速定档:
五维评分(每项 1-3 分,总分 5-15):
| 维度 | 1 分(轻松) | 2 分(中等) | 3 分(重) |
|---|---|---|---|
| 接口形态 | 官方 API / 干净 JSON | HTML + 简单 XHR | 数据藏 App / 响应加密 |
| 鉴权强度 | 无登录 / API Key | 普通 Cookie 登录 | 短期 token + 复杂签名 |
| 风控等级 | 无识别 | 限频 / UA 校验 | Cloudflare 等专业风控 |
| 数据载体 | 静态页 / JSON | JS 动态渲染 | App / 小程序 / 桌面端 |
| 规模 | 一次性 / 1 万以下 | 周期 / 1-100 万 | 持续 / 100 万以上 |
四档结论:
- 5-7 分 友好:agent 能独立搞定,小时级出活
- 8-10 分 中等:agent 能做,但需要你提供代理或账号,1-3 天
- 11-13 分 困难:agent 半能做,关键节点你定路线,1-2 周
- 14-15 分 地狱:agent 做不了,需要人主导
30 秒快筛(拿到目标先做这五步):
- DevTools → Network → Fetch/XHR:有结构化 JSON 接口吗?有 → 友好/中等
- 看请求头:有
X-Sign / _signature / X-Bogus这类自定义参数?有 → 至少升一档 - 看响应 Cookie:带
__cf_bm / datadome / ak_bmsc?带 → 困难档 - curl 重放:把请求复制成 curl 跑一遍,结果一致吗?不一致 → 有动态参数
- 换端验证:手机 H5 / App 有没有同样数据?没有且只在 App → 地狱档
写任务描述——让 agent 不跑偏
任何任务必须包含四要素:入口、字段、规模、终止条件。少一个就别动手。
用这个模板给 agent 下指令:
【任务目标】
一句话说明要什么数据 / 触发什么动作。
【入口】
起始 URL / 操作位置:______
登录态:需要 / 不需要(账号位置:______)
【流程】
Step 1:______
Step 2:______
Step 3:______
【字段定义】
- 字段A(类型,示例值,缺失时如何处理)
- 字段B(同上)
【规模与频率】
目标数量:______
跑的频率:一次性 / 每天 X 点 / 持续
单次预算:时间上限 __ 分钟,请求上限 __ 次
【终止条件】
- 连续 N 次失败 → 停下汇报
- 触发验证码 → 暂停等人处理
- 数据量低于预期 X% → 停下汇报
【交付】
保存到:______(路径 / 表)
格式:______(jsonl / csv / sqlite)
【约束】
- 禁止行为:______
- 速率限制:每秒 ≤ __ 次好描述 vs 坏描述:
| 坏描述 | 好描述 |
|---|---|
| 帮我爬 X 网站 | 从 X 列表页第 1-50 页进详情,拿「标题/价格/上架时间」,存 CSV |
| 监控竞品价格 | 每天 9 点抓 A/B/C 三个 SKU 在 X 平台当前价,跌幅超 5% 通知 |
| 登录后下载文件 | 用账号 ___ 登录 X 系统,进「报表」→「月度」,下载最新 PDF |
| 抓所有评论 | 抓商品 ID=12345 评论,最多 1000 条,时间倒序,遇登录则停 |
分阶段交付(必须遵守):
- 小样:跑 10 条 → 你人工核对
- 中样:跑 100 条 → 看稳定性、是否触发反爬
- 放量:再跑全量,必须有进度上报与异常熔断
结果验收——别被假数据骗了
agent 说"完成了",你不能直接信。过三道关:
第一关:抽样比对
随机抽 5-10 条,浏览器手开同一条数据对照。重点看:
- 字段顺序对不对
- 文本有没有截断
- 数字单位有没有错("1.2万"被存成"1.2")
第二关:数量级
网站显示"共 8 万条",agent 给你 200 条,必有问题。常见原因:分页没翻完、被风控截断、去重过激。
第三关:字段完整度
每个字段统计缺失率,超过 5% 就要查。某字段全空 → 选择器失效或字段改名。
故障定位——agent 卡住了怎么办
agent 跑着跑着不动了,先定位"卡在哪一层":
| 症状 | 大概率原因 | 第一行动 |
|---|---|---|
| 403 Forbidden | UA/Cookie/IP 问题 | 检查 UA、Referer、Cookie;换 IP |
| 429 Too Many Requests | 限流 | 降频、加代理池 |
| 418 / 521 / 520 | Cloudflare 等风控 | 换入口或降速 |
| 302 跳登录页 | 登录态丢失 | 重新登录、刷新 Cookie |
| 200 但内容空 | 选择器失效或假成功 | 重抽样、改选择器 |
| 弹验证码 | 风控触发 | 降频 / 换 IP / 打码 |
假成功识别(最阴险的失败):
HTTP 200 不等于成功,警惕这几种:
- 风控伪页:返回空壳 HTML / "请稍后再试",但状态码 200
- 降级页:未登录看到的简略版,agent 误以为是完整数据
- 重复模板:每条记录字段一模一样 → agent 卡在某个 fallback 上反复输出
判断方法:看字段熵——所有标题都是同一句、所有价格都一样,就是出事了。
换层决策(爬不动时别死磕):
- 接口直连搞不定 sign → 上 Playwright 让浏览器自己算
- Playwright 被指纹识别 → 上反检测方案(patchright / camoufox)
- 网页没有数据 → 抓 App 包
- App 抓不了(SSL Pinning)→ Frida 解 pinning
- 全部搞不定 → 回头问"这事还值得做吗"
每退一层成本翻 3-5 倍,退两层以上就该重新评估 ROI。