让 Claude Code 帮你写爬虫:2026 年的 “Agent 原生” 数据采集
目录
TL;DR
让 Claude Code 自己写爬虫,实际使用中,Agent 自行生成的爬虫经常会遇到 Cloudflare、JS 渲染和 DOM 改版等问题。正确的做法是"Agent 原生"采集:不让 Agent 写爬虫,让它调爬虫工具。试过一圈之后我选了 Bright Data CLI——不用自建代理池,不用维护浏览器指纹,网站改版跑一条 heal 命令就能修复,Agent 全程只碰结构化 JSON。
一、前言:为什么你的 Agent 写不好爬虫?
AI 编程助手(Claude Code、Cursor)写业务代码很顺,但一碰到"去网上抓点数据"就翻车。
我自己试过不少次:让 Agent 写个脚本抓技术论坛,它十秒给出 requests + BeautifulSoup,运行要么拿到空 HTML,要么被 Cloudflare 拦在验证码页。好不容易加上 Playwright 跑通了,过两天网站改了个 class 名,脚本静默失效——不报错,只返回 null,等发现的时候数据已经断了好几天。
原因很简单:爬虫的难点从来不是写选择器,而是代理池、浏览器指纹、JS 渲染、验证码和 DOM 维护这些底层脏活。让一个专注逻辑生成的 LLM 去扛基础设施,方向就错了。
正确的做法是"Agent 原生"采集:不让 Agent 写爬虫,让它调爬虫工具。我用的是 Bright Data CLI,把采集能力封装成 bdata 命令,Claude Code 只管调用和处理 JSON,Bright Data 提供代理、网页解锁、浏览器自动化和数据采集等基础设施,Agent 可以通过 CLI 调用相应的数据采集能力。
。
这篇文章以 Hacker News 采集为例,完整演示从搭建到自愈的全流程。👉 免费开始使用 Bright Data CLI →
二、前置环境准备
2.1 环境依赖要求
Bright Data CLI 基于 Node.js 运行,同时 Claude Code 终端需要识别全局 bdata 命令
校验 Node 版本(必须≥v20.0.0);
打开终端执行命令:
node -v
该 CLI 包的 engines 字段声明了 node>=20,低版本安装时 npm 会直接报错拒绝安装,所有这里我们一定要确保版本≥v20.0.0,如果版本不满足可以在官网重新下载安装即可 。
如下是博主安装的node:

2.2 全局安装 Bright Data CLI
我们需要将采集能力注册为系统的全局命令,这样无论是本地的终端,还是 Cursor、Claude Code 的内嵌终端,都可以直接调用,而不需要在每个项目中重复安装。
执行全局安装命令(Windows/macOS/Linux 通用):
npm install -g @brightdata/cli
验证安装是否成功:
bdata --version
终端输出版本号即代表安装完成;若提示 command not found,关闭编辑器终端重启即可加载环境变量。
2.3 CLI 授权登录
登录命令:
bdata login
执行命令自动唤起浏览器跳转 Bright Data 授权页面,完成账号登录授权。本地 Mac/Windows,推荐;该方式是OAuth 鉴权,本地安全存储 API 凭证文件,仅当前系统用户可读,每次执行 bdata 命令自动携带鉴权信息,无需重复输入密钥。

通过如上截图,我们可以看到,执行登录并授权成功后,CLI 会自动创建两个配套采集 Zone,不需要我们在后台手动配置。
CLI 的基础用法博主上篇已经写过,有需要的可以去翻上一篇。这篇博主只聊一件事:怎么让 Agent 来敲这些命令。
2.4 项目规则配置 CLAUDE.md
为了让 Claude Code 知道如何正确使用这个工具,而不是每次都试图自己写 fetch 脚本,我们需要在项目根目录建立一个“行为准则”。
在项目根目录新建CLAUDE.md文件,用于全局采集约束。
# 项目采集演示规范
> 本文件为会话执行约定,仅用于 Bright Data CLI(bdata)工具工作流
## 执行约束
1. 所有公开网页数据采集任务,禁止自行编写 Playwright、Requests、httpx 爬虫脚本
2. 统一调用本地全局安装 @brightdata/cli,简写指令 `bdata`
3. 使用 `bdata scraper create` 生成采集器ID;页面字段返回null空值时,使用 `bdata scraper heal` 做自愈调试
4. 本次对话上下文内记住生成的采集器ID,方便后续复用测试
5. 仅抓取无需登录的公开网页,严格遵守GDPR、CCPA隐私合规、目标网站robots协议
6. 抓取海外站点时通过 `--country` 参数指定对应地区住宅IP
## 固定采集器标识(Collector ID)|输出后置归档规则
> 说明:在单次采集任务产出完成后执行收尾归档
### 触发时机
所有结构化产物(JSON / Markdown表格)生成完毕,作为**最后一步收尾动作**,在当前MD文档追加采集实例元信息归档块。
### 字段释义
- 实例别名:给本条采集流水线命名,便于人工识别业务用途
- Collector ID:采集实例唯一静态标识,绑定目标地址与输出Schema,用于跨会话复用配置、数据溯源、MCP调度、多流水线隔离
- 绑定URL:本次采集目标源地址
- 输出字段Schema:本次约定输出字段清单(字段名(业务释义))
这份配置等同于 Claude 的长期记忆 Skill,无需每次对话重复告知工具使用规范,是实现自动化调度的核心前提。
三、Agent 爬虫生产落地实战:Claude Code + Bright Data CLI
准备工作就绪,我们进入实战环节。我们将以 Hacker News 首页为例,演示如何让 Agent 完成从“理解需求”到“产出数据”再到“故障自愈”的全过程。
3.1 任务背景:Hacker News 技术资讯采集
这里博主选用无 Bright Data 预制解析模板 Hacker News 首页作为目标站点,完整演示自然语言定义采集、Collector 会话缓存、DOM 变更一键自愈的自定义爬虫全生命周期,适配研发资讯汇总分析场景。
3.2 Claude 自动执行采集器创建终端指令
我们只需要在 Claude Code 终端输入自然语言需求,比如:
读取项目 CLAUDE.md 约束,目标 URL https://news.ycombinator.com,任务:抓取首页公开资讯,提取帖子标题、点赞数、评论链接。最终输出结构化表格用于 AI 行业资讯汇总分析。
AI 读取项目 CLAUDE.md 执行规范,识别采集需求,通过 ! 调用本地 Bash 终端,自动执行如下创建命令;增加 --name 便于后台识别采集器、–pretty 格式化 JSON、–confirm 跳过安全确认弹窗,2>&1 捕获完整日志供 Agent 解析。
!bdata scraper create https://news.ycombinator.com "Extract each post on the homepage: title, points/upvotes, and the comment link/count" --name hn-homepage --pretty --confirm 2>&1
采集器创建成功后,Agent 自动调用 bdata scraper run 执行抓取,如下截图:
输出结果:
采集输出标准化数据后,可自动生成可读表格,也能直接本地存档、存入数据库或交给大模型做行业热点与趋势分析,实现采集 — 分析自动化流转。
3.3 会话内缓存 Collector ID,快速复用
依据 CLAUDE.md「固定采集器标识(Collector ID)|输出后置归档规则」:
Agent 在当前对话内存缓存本次 Collector ID,同会话内再次发起同源资讯抓取需求时,直接读取缓存复用该采集实例配置,无需重复复述目标URL、输出字段、表格规范。
新会话无内存缓存,依赖后置写入MD的【采集实例归档】元块作为持久化基准;开启全新对话时,传入MD归档里记录好的 Collector ID,即可加载整套采集配置复用。

3.4 如果网站 DOM 改版,自动触发自愈逻辑
当采集结果出现字段失效时,Agent 可以根据预设规则调用 heal 流程进行修复;该能力主要适用于 DOM 结构的局部变化。
CLI 云端重新遍历页面节点、更新内部选择器,返回修复后完整预览数据。
heal 返回修复后的预览数据后,确认无误需执行 bdata scraper approve <collector_id> 才会正式上线;不 approve 则原配置不变。
准备把这套 Agent 原生采集工作流用到自己的项目?
从一个公开网页开始,让 Claude Code 负责任务逻辑,让 Bright Data 提供网页数据采集基础设施。
→ 开始使用 Bright Data,每月 5,000 次页面加载,不需要绑定信用卡
四、为什么 Agent 原生采集值得在 2026 年关注?
通过上述实战,我们可以清晰地看到这种“Agent 原生”采集模式,显著减少部分基础设施和维护工作。它不仅仅是工具的更换,更是开发范式的转变。
4.1 传统爬虫 vs. Agent 原生爬虫:核心差异对比
| 对比维度 | 传统爬虫模式 (Agent 裸写/自建) | Agent 原生模式 (Bright Data CLI) |
|---|---|---|
| 开发模式 | 手动编码:Agent 生成 requests/BeautifulSoup 等脆弱代码,无法处理 JS 渲染和反爬。 |
工具调用:Agent 只需调用 bdata 命令,底层由专业基础设施处理,Agent 专注业务逻辑。 |
| 基础设施 | 自行维护:需自建代理池、处理 IP 轮换、维护浏览器集群,成本高且不稳定。 | 全托管服务:代理、解锁、浏览器渲染均由 Bright Data 托管,提供稳定、合规的 API。 |
| 维护方式 | 被动修复:网站改版导致爬虫失效,需人工发现、调试、修复并重新部署,耗时耗力。 | 支持自动修复部分 DOM 结构变化:通过 bdata scraper heal 命令,AI 自动识别并修复选择器,实现自愈,保障数据管道稳定。 |
五、总结:这不是换个工具,是换个分工
用了三周 Bright Data CLI + Claude Code 的组合,我最大的感受是:数据采集终于从"写正则、调选择器"变成了"调命令、拿数据"。
但我也得说清楚边界,免得你踩坑:
- 只适合公开网页。需要登录、需要提交表单、需要绕过付费墙的场景,CLI 不支持,也不应该支持——合规红线摆在那里(Bright Data 仅采集公开数据,通过 SOC 2、ISO 27001 认证,服务 20,000+ 企业客户。
- 内部系统别用。如果你采集的是公司内网页面或本地 HTML 文件,直接用解析库更合适,没必要走托管服务。
- heal 不是万能的。它只处理 DOM 结构的局部变化(class 改名、标签嵌套调整)。如果网站彻底重做、页面语义发生根本变化,heal 会失败,这时应该重新
bdata scraper create。
想让 AI Agent 直接访问实时 Web 数据?
了解 Bright Data MCP,为 Claude、Cursor 等 AI Agent 接入实时 Web 数据和工具。
→ 探索 Bright Data MCP,每月 5,000 次页面加载,不需要绑定信用卡
六、FAQ
Q1:Collector ID 会过期吗?换了电脑还能用吗?
A:不会过期。Collector ID 是绑定在 Bright Data 账号下的静态标识,配置存在云端,和本地环境无关。换电脑后重新执行bdata login授权同一个账号,就能用原来的 ID 直接bdata scraper run <id>,不需要重新 create。建议把 ID 写进项目的 CLAUDE.md /.cursor/rules/CODEX.md,跨设备、跨会话同步。
Q2: 如果网站改版幅度很大,Self-Healing 还能生效吗?
A: Self-Healing 主要针对 DOM 结构的局部变化,例如 class 名改变、标签嵌套层级调整等。如果网站进行了彻底的重新设计,导致页面语义发生根本变化,Self-Healing 可能会失败。此时,最稳妥的方式是重新运行 bdata scraper create 创建一个新的采集器。
Q3: 采集到的数据可以保存到哪里?
A: CLI 本身负责将数据以 JSON 格式输出到标准输出(stdout)。你可以利用操作系统的重定向功能将其保存到文件(如 bdata scraper run > data.json),或者在你的 Agent 工作流中,将输出的 JSON 数据直接传递给后续的处理脚本,存入数据库或数据仓库。
更多推荐




所有评论(0)