Claude Code 写爬虫与数据清洗:先查 robots.txt 和网站条款,控制频率,原始数据留一份再清洗

想让 Claude Code 写爬虫抓数据再清洗。本文先讲合规:robots.txt 不是授权也不是安全措施、网站条款要自己读;再讲怎么用 Python 标准库检查规则、小样本先试、保存原始数据,以及用 pandas 清洗,附四段提示词。

NNathaniel bigo··原创首发·AI 辅助撰写
9 分钟读完
资料核对于 2026-11-05 · 依据官方文档与公开资料整理 Pro 账号
本文根据 Google 搜索中心《robots.txt 简介》、RFC 9309、Python 官方《urllib.robotparser》、pandas 官方文档和 Claude Code 官方《Best practices for Claude Code》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 Anthropic 官方网站。

适用于谁

  • 想抓一些公开网页上的信息(价格、文章列表、公开统计)做整理的人;
  • 手里有一堆乱七八糟的表格或抓来的数据,想让 Claude Code 写清洗脚本的人;
  • 想知道「哪些能抓、哪些不该抓」的新手。

先说边界:本文只写遵守规则的做法。 网站明确禁止抓取、需要登录才能看的内容、含个人信息的页面,不在本文范围内;遇到验证码、拦截,就停下来,别去绕。

结论先说

  1. 先看规则再动手。 网站的 robots.txt(域名根目录下)是网站对爬虫的访问说明。Google 官方说它主要用来避免请求过多压垮网站,不是让网页不被收录的机制;RFC 9309 则明确写了:这些规则不是一种访问授权,也不能代替真正的内容安全措施。
  2. robots.txt 不具备强制力。 Google 官方说,是否遵守取决于爬虫自己。所以「robots.txt 没写禁止」不等于「可以随便抓」,你还要看网站的使用条款,和这些数据本身是否涉及版权、个人信息。
  3. Python 标准库就能检查规则。 urllib.robotparser 的 RobotFileParser 有 can_fetch() 判断某个 User-Agent 标识能不能抓某网址,还有 crawl_delay()、request_rate() 读取网站要求的抓取间隔。
  4. 礼貌抓取:限速、小样本先试、标明身份、保存原始页面,这几条是通用做法。
  5. 清洗和抓取分开。 先把原始数据存下来,清洗脚本只读原始数据,不要边抓边洗。

合规地写爬虫的流程

图:本站根据 Google 搜索中心:robots.txt 简介 整理的示意图

第一步:先查规则,不写代码

提示词 1:合规检查,只读不抓

text
我想从【网站地址】抓取【公开的商品列表:名称、价格、链接】,用于【个人比价,不公开发布】。
请先不要写爬虫。只做这些事:
1)读取该网站的 robots.txt,说明针对通用爬虫(*)的规则里,我要抓的路径是否被禁止,有没有 Crawl-delay;
2)告诉我该网站的使用条款一般放在哪里,我需要自己读哪几个关键点(是否禁止自动化访问、是否限制商用、版权声明);
3)这个网站有没有官方 API 或数据下载,如果有,优先建议用它;
4)如果存在任何禁止的迹象,请明确建议我不要抓取。

很多网站有官方 API 或开放数据,用它比解析网页稳定得多,也更合规,这条是通用建议。

第二步:用标准库自检规则

让 Claude 写一个小检查脚本,用的是 Python 官方文档里的类:

python
import urllib.robotparser

rp = urllib.robotparser.RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
print(rp.can_fetch("MyResearchBot", "https://example.com/products"))
print(rp.crawl_delay("MyResearchBot"))

这是按官方文档里的方法名(set_url、read、can_fetch、crawl_delay)拼的示例,把地址和名称换成你自己的。can_fetch 返回 False 就说明按规则不该抓。注意:它只读 robots.txt,不读网站条款。

第三步:写抓取脚本,限速、小样本

提示词 2:礼貌的抓取脚本

text
请用 Python 写一个抓取脚本,抓取【商品列表页】,要求:
1)开始前用 urllib.robotparser 检查每个网址是否允许抓取,不允许就跳过并记录;
2)请求之间至少间隔 【3】 秒;如果 robots.txt 里有 Crawl-delay,以较大的为准;
3)User-Agent 如实写明脚本用途和我的联系邮箱【你的邮箱】,不要伪装成浏览器;
4)遇到 403、429 或任何拦截提示,立即停止并告诉我,不要重试绕过,不要换身份;
5)每个页面的原始 HTML 保存到 raw/ 目录,文件名用网址的哈希;已保存的不要重复抓;
6)先只抓 5 个页面做试验,给我看结果,我确认后才抓更多。

第 3 条和第 4 条是底线:不隐藏身份,被拦就停。先小范围试、看结果、再扩大,是通用的稳妥做法。

第四步:数据清洗

清洗脚本只读 raw/,输出到 clean/,不改原始文件。常见的坑:价格里带货币符号和逗号、日期格式不统一、重复行、缺失值。

pandas 官方文档里有现成的方法:pandas.to_numeric(列, errors='coerce') 把无法解析的值变成空值(NaN),不会直接报错;DataFrame.drop_duplicates(subset=..., keep='first') 按指定列去重并选择保留哪一行;DataFrame.to_csv(..., index=False) 写文件时不带行号。

提示词 3:清洗脚本,保留清洗日志

text
请写一个清洗脚本,读取 raw/ 解析出的数据(或 data.csv),输出 clean/products.csv:
1)价格列去掉货币符号和千位逗号,转成数字;无法解析的值置为空,并把对应行写入 clean/rejected.csv,附原因;
2)按【商品链接】去重,保留最早的一条;
3)日期统一成 YYYY-MM-DD;
4)不要覆盖原始数据;
5)运行后输出一段清洗报告:输入多少行、输出多少行、去重多少、被拒绝多少、每列的空值数量。
先用 20 行样例测试,再跑全量。

最后一条「清洗报告」很重要:输入行数、输出行数对不上,说明有数据被悄悄丢了。

提示词 4:数据质量抽查

text
请从 clean/products.csv 随机抽取 20 行,与 raw/ 里对应的原始页面逐项核对(名称、价格、链接),列出不一致的行和原因。
再检查:价格有没有明显异常值(比同类高或低几十倍),有没有同一商品出现多次。只报告,不修改。

爬虫与清洗的合规与质量清单

图:本站根据官方文档整理的示意图

被拦住了怎么办

如果脚本收到 403、429,或者页面出现验证码,说明网站不希望你这样访问。正确的反应是停下来:降低频率、缩小范围,或者换成官方的数据接口、联系网站方询问授权,而不是让 Claude 想办法绕过去。让 Claude 在脚本里把这个规则写死,一旦遇到拦截就退出并把状态码写进日志,这样即使你不盯着,脚本也不会一直敲门。把这条要求写进项目的 CLAUDE.md 也可以,后续会话都会遵守。

不该碰的事

  • 需要登录才能看的内容、付费内容,不要为了抓取而共享账号或绕过限制;
  • 个人信息(手机号、邮箱、住址等),别大批量收集,涉及法律问题请咨询专业人士;
  • 抓到的内容,版权仍属原作者;个人研究和公开发布、商用的要求不同;
  • 看到网站明确写「禁止自动化访问」,就不要抓。

常见问题

Q:robots.txt 没有禁止我就能抓吗?

不一定。它不是授权,网站条款、版权、个人信息规定都要看。官方 RFC 也明说,这些规则不是访问授权。

Q:网页是 JavaScript 动态加载的,抓不到内容怎么办?

先看有没有官方 API。需要真正渲染页面时可以用浏览器自动化,见 /guides/claude-code-playwright-mcp-browser-testing,同样要遵守上面的规则。

Q:想做给 AI 用的网页抓取?

可以参考站内的 /guides/firecrawl-web-scraping-for-llm-quickstart,同样要先确认合规。

订阅和额度

写脚本、跑清洗会话不长,但调试抓取常要来回多轮。订阅选择见 /chongzhi/claude-code,价格和额度以官方页面当前显示为准。

相关教程

参考资料

  • Google 搜索中心:robots.txt 简介 — https://developers.google.com/search/docs/crawling-indexing/robots/intro
  • RFC 9309:Robots Exclusion Protocol — https://datatracker.ietf.org/doc/html/rfc9309
  • Python 文档:urllib.robotparser — https://docs.python.org/3/library/urllib.robotparser.html
  • pandas 文档:pandas.to_numeric — https://pandas.pydata.org/docs/reference/api/pandas.to_numeric.html
  • Claude Code 文档:Best practices for Claude Code — https://code.claude.com/docs/en/best-practices

Nathaniel 的更多内容

  1. 01

    Claude Code 在 Windows 上的常见坑:Git Bash 还是 PowerShell、路径反斜杠、假报错、WSL 怎么选

    Windows 上用 Claude Code,装好之后最容易踩的是:用哪个 shell、路径写法不一致、grep 没匹配就报错、钩子没生效、WSL 和原生怎么选。本文逐条按官方文档整理原因和处理办法,附三段提示词和一张对照表。

    Claude0
  2. 02

    Claude Code Hooks 实战「提交前自动跑测试」:PreToolUse 拦住 git commit,测试不过就退出码 2,附 Windows 注意点

    只写一个完整例子:让 Claude Code 每次要执行 git commit 之前,先自动跑项目测试,没通过就拦下并把输出交给它修。本文按官方 Hooks 文档给出脚本、settings.json 配置、测试方法、排错和 Windows 的两处坑。

    Claude0
  3. 03

    Claude Code 自定义斜杠命令与 Skill 实战:从零写一个「生成更新日志」的 /release-notes,含传参、预执行命令和调试

    概念看过了,还是不知道从哪下手?本文按 Claude Code 官方「Extend Claude with skills」写一个完整可用的例子:用 /release-notes 根据 git 记录生成更新日志,覆盖目录、frontmatter、传参、预执行命令、预授权和调试。

    Claude0
  4. 04

    Claude Code 部署网站:先写 Dockerfile 和 compose 在本机跑通,再按清单上云服务器,别让它直接改线上

    想让 Claude Code 帮你把网站部署到云服务器。本文只写通用做法,按 Docker 官方文档讲:让它写 Dockerfile、.dockerignore 和 compose,在本机跑通,端口和数据卷怎么设,再给出上线清单,并说明为什么不要让它直接动线上机器。

    Claude0
  5. 05

    Claude Code 写 Chrome 扩展:按 Manifest V3 起步,加载未打包的扩展,改了哪些文件要重新加载

    想让 Claude Code 帮你写一个 Chrome 扩展。本文按 Chrome 官方扩展文档讲:manifest.json 的最小写法、在 chrome://extensions 加载未打包的扩展、哪些改动要刷新、怎么看控制台和报错,再给四段提示词,以及权限要尽量少。

    Claude0
  6. 06

    Claude Code 写安卓 App:Android Studio 建项目、让它用 gradlew 编译安装,报错和日志怎么喂给它

    想让 Claude Code 帮你写安卓 App。官方文档没有专门的安卓教程,本文把 Claude Code 官方工作流和安卓官方命令行文档拼在一起:Android Studio 建项目、gradlew 编译安装、模拟器和真机、测试与日志,附四段提示词。

    Claude0

同产品的其他教程

  1. 01

    Claude Code 用数据库 MCP 查数据、出报表:只读账号、先看口径再看数字,结果别一次拉太多行

    想用自然语言让 Claude Code 查数据库、出统计报表,而不是写后端接口。本文按官方 MCP 页面和 DBHub 说明讲:怎么连 PostgreSQL、MySQL、SQLite、输出太大怎么办、怎么让它先说明口径、怎么核对数字,附三段提示词。

    Claude0
  2. 02

    Claude Code 配 Figma MCP 还原设计稿:插件或一条命令安装,复制图层链接,小块小块地让它出代码

    想让 Claude Code 照 Figma 设计稿写前端代码。本文按 Figma 官方开发者文档讲:远程服务器地址、插件和手动两种安装、怎么复制图层链接、为什么要选小块、座位类型与调用次数限制,并给三段还原设计稿的提示词。

    Claude0
  3. 03

    Claude Code 管理 GitHub issue:用 gh 命令还是 GitHub MCP,怎么装、怎么限权、怎么让它分拣和回复 issue

    让 Claude Code 读 issue、分拣标签、起草回复、关联 PR,有两条路:装好 gh 命令行直接用,或连 GitHub 官方 MCP 服务器。本文按两边官方文档讲安装命令、令牌权限、只读模式,并给出三段分拣提示词和限权设置。

    Claude0
  4. 04

    Claude Code 配 Playwright MCP 做浏览器测试:一条命令安装,让它打开页面、点按钮、读控制台,再把流程写成测试

    想让 Claude Code 自己打开浏览器测试你的网页。本文按微软 Playwright MCP 官方仓库和 Claude Code 官方 MCP 文档讲:安装命令、怎么确认连上、有头无头与隔离参数、一次测试的提示词,以及它不是安全边界这件事。

    Claude0
  5. 05

    Claude Code 写文档、README 和代码注释:先让它读代码再动笔,指定风格,写完逐条核对命令能不能跑

    想让 Claude Code 给项目补 README、接口文档和注释,又怕它编造不存在的命令和参数。本文按官方「Handle documentation」工作流讲:先找没有文档的代码、指定风格、写完核对,附四段可复制提示词和验证办法。

    Claude0
  6. 06

    用 Claude Code 整理电脑文件、批量重命名、处理表格:先出清单再执行,副本操作和权限设置

    Claude Code 不只能写代码,官方说它能在任何文件夹里搜索、编辑和整理内容。本文讲非程序员怎么用它整理下载文件夹、批量重命名、处理表格:先出整理清单、用副本操作、权限怎么设,附四段提示词和撤销办法。

    Claude0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~