本文根据 Google 搜索中心《robots.txt 简介》、RFC 9309、Python 官方《urllib.robotparser》、pandas 官方文档和 Claude Code 官方《Best practices for Claude Code》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 Anthropic 官方网站。
适用于谁
- 想抓一些公开网页上的信息(价格、文章列表、公开统计)做整理的人;
- 手里有一堆乱七八糟的表格或抓来的数据,想让 Claude Code 写清洗脚本的人;
- 想知道「哪些能抓、哪些不该抓」的新手。
先说边界:本文只写遵守规则的做法。 网站明确禁止抓取、需要登录才能看的内容、含个人信息的页面,不在本文范围内;遇到验证码、拦截,就停下来,别去绕。
结论先说
- 先看规则再动手。 网站的
robots.txt(域名根目录下)是网站对爬虫的访问说明。Google 官方说它主要用来避免请求过多压垮网站,不是让网页不被收录的机制;RFC 9309 则明确写了:这些规则不是一种访问授权,也不能代替真正的内容安全措施。 - robots.txt 不具备强制力。 Google 官方说,是否遵守取决于爬虫自己。所以「robots.txt 没写禁止」不等于「可以随便抓」,你还要看网站的使用条款,和这些数据本身是否涉及版权、个人信息。
- Python 标准库就能检查规则。
urllib.robotparser的RobotFileParser有can_fetch()判断某个 User-Agent 标识能不能抓某网址,还有crawl_delay()、request_rate()读取网站要求的抓取间隔。 - 礼貌抓取:限速、小样本先试、标明身份、保存原始页面,这几条是通用做法。
- 清洗和抓取分开。 先把原始数据存下来,清洗脚本只读原始数据,不要边抓边洗。

图:本站根据 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,价格和额度以官方页面当前显示为准。
相关教程
- /guides/claude-code-python-automation-script-beginner:写 Python 自动化脚本
- /guides/claude-code-organize-files-rename-spreadsheets:处理表格
- /guides/firecrawl-web-scraping-for-llm-quickstart:Firecrawl 快速上手
参考资料
- 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
0 条评论
还没有评论,来抢沙发~