当前位置:首页>python>python爬虫篇之robots.txt协议完全指南

python爬虫篇之robots.txt协议完全指南

  • 2026-10-08 12:27:39
python爬虫篇之robots.txt协议完全指南

4.3

robots.txt协议完全指南

当搜索引擎的“蜘蛛”爬虫第一次造访你的网站时,它做的第一件事是什么?不是抓取首页,也不是分析内容,而是寻找一个名为 robots.txt 的小文件。

这个看似不起眼的文本文件,却是网站与搜索引擎之间最重要的沟通桥梁,它决定了哪些内容可以“见光”,哪些需要“藏起来”。

1

robots.txt 是什么?为什么需要它?

robots.txt 是一个存放在网站根目录下的纯文本文件(例如 https://www.example.com/robots.txt)。它遵循“机器人排除协议”(Robots Exclusion Protocol),用于告知搜索引擎的爬虫程序(如Googlebot、Baiduspider)哪些页面或目录可以抓取,哪些应该忽略。

它的核心作用有三点:

(1)引导抓取,优化资源

避免爬虫抓取无SEO价值的页面(如后台、登录页、重复内容),将有限的“抓取预算”集中在核心内容上,提升收录效率。

(2)保护隐私与敏感信息

防止管理后台、配置文件、用户数据等敏感目录被索引和公开。

(3)提升网站性能

减少爬虫对服务器资源的无效消耗,特别是对于大型网站或资源有限的服务器。

重要认知:它是一份“君子协议”,而非防火墙。

robots.txt 更像是一份写给“礼貌”爬虫的请求书,而非强制执行的法律。正规的搜索引擎爬虫(如Google、百度)会遵守它,但恶意爬虫完全可以无视。因此,它不能用于隐藏真正敏感的信息(如信用卡号),这类信息应通过密码保护或服务器权限来控制。

2

核心语法:四行代码掌控全局

一个标准的 robots.txt 文件由一条或多条“规则组”构成。每组规则包含以下核心指令:

语法细节与优先级:

(1)路径规则

必须以斜杠 /开头。Disallow: /admin会屏蔽所有以 /admin开头的URL(如 /admin.html和 /admin/),而 Disallow: /admin/则只屏蔽 /admin/目录下的内容。

(2)指令顺序

规则按从上到下的顺序执行。更具体的路径规则优先。

(3)Allow 与 Disallow

Allow指令可以覆盖同组中更宽泛的 Disallow规则

。例如,禁止整个 /blog/目录,但允许其中的 /blog/public/子目录。

(4)注释

使用 #号添加注释。

3

实战示例:从入门到精通

(1)基础场景示例

txt

# 示例1:允许所有爬虫抓取整个网站(默认行为,等同于没有robots.txt)User-agent: *Allow: /# 示例2:禁止所有爬虫抓取任何内容(常用于网站开发或维护阶段)User-agent: *Disallow: /# 示例3:禁止所有爬虫访问特定目录和文件User-agent: *Disallow: /wp-admin/      # WordPress后台Disallow: /cgi-bin/       # CGI脚本目录Disallow: /tmp/           # 临时文件Disallow: /private.html   # 特定私密文件# 示例4:针对特定爬虫设置规则(仅禁止BadBot)User-agent: BadBotDisallow: /User-agent: *Allow: /

(2)WordPress 网站优化模板(推荐)

对于使用 WordPress 的网站,一个优化的 robots.txt 可以显著提升SEO效率:

txt

User-agent: *Disallow: /wp-admin/Disallow: /wp-includes/Disallow: /wp-login.phpDisallow: /wp-content/plugins/Disallow: /wp-content/themes/Disallow: /search/Disallow: /?s=*Disallow: /author/           # 如果网站只有单一作者,可禁止作者存档页避免重复内容Disallow: /*?replytocom=*    # 禁止评论分页参数# 允许对网站功能重要的文件Allow: /wp-admin/admin-ajax.php  # 许多主题和插件的AJAX功能依赖此文件Allow: /wp-content/uploads/      # 允许抓取上传的图片、PDF等媒体文件# 指明网站地图,帮助爬虫Sitemap: https://www.yoursite.com/sitemap_index.xml

(3)使用通配符 *和 $

txt

# 禁止抓取所有动态URL(包含问号?)Disallow: /*?*# 禁止抓取所有 .pdf 文件Disallow: /*.pdf$# 禁止抓取所有 /private- 开头的路径Disallow: /private-*

注意:$表示URL的结束。/*.pdf$只匹配以 .pdf结尾的URL。

4

必须绕开的“深坑”:常见错误与误区

配置 robots.txt 时,一个微小的错误就可能导致整个网站从搜索引擎消失。请务必避开以下陷阱:

(1)文件放错位置

robots.txt必须放在网站根目录(如 https://example.com/robots.txt)。放在子目录下无效

。

(2)使用绝对URL

在 Disallow和 Allow指令中应使用相对路径(以 /开头),而非完整的 https://链接。

(3)指令顺序错误

Allow指令若写在 Disallow前面,且范围更广,会导致后面的 Disallow失效。

txt

# ❌ 错误:Allow在前且范围更广,Disallow无效User-agent: *Allow: /Disallow: /admin/# ✅ 正确:Disallow在前,或Allow范围更具体User-agent: *Disallow: /admin/Allow: /

(4)误用已废弃的指令

Crawl-delay:用于设置爬虫抓取延迟(单位:秒)。但Google已明确不再支持此指令

。如需控制Googlebot的抓取速度,应在Google Search Console中设置。

Noindex:切勿在 robots.txt 中使用 Noindex指令。Google已于2019年宣布停止支持此用法

。如果想阻止页面被索引,应使用 <meta name="robots" content="noindex">元标签或 X-Robots-TagHTTP 标头

。

(5)忘记移除开发环境的屏蔽

网站在开发阶段常用 Disallow: /屏蔽所有抓取。上线后务必移除或修改此规则,否则网站将无法被收录。

(6)屏蔽了CSS/JS文件

如果禁止爬虫抓取 .css和 .js文件,Googlebot 将无法看到网站的完整渲染样式,可能影响页面内容的理解和排名。

(7)最大的误解:robots.txt 能隐藏页面

这是最危险的误区!即使使用 Disallow屏蔽了某个页面,如果其他网站链接到了该页面,Google 仍可能发现该URL并将其编入索引(只是没有描述内容)。要彻底阻止页面出现在搜索结果中,必须使用 noindex元标签或密码保护。

5

最佳实践与高级技巧

(1)始终包含 Sitemap 指令

在文件末尾添加 Sitemap:指令,帮助搜索引擎更快、更全面地发现你的重要页面。

(2)为不同爬虫定制规则

你可以为不同的搜索引擎设置不同的规则。

txt

# 只禁止Google图片搜索抓取特定目录User-agent: Googlebot-ImageDisallow: /images/private/# 其他所有爬虫规则照常User-agent: *Disallow: /admin/

(3)使用工具测试

修改 robots.txt 后,务必使用 Google Search Console 的 robots.txt 测试工具 进行验证,确保没有意外屏蔽重要页面。

(4)子域名需独立配置

example.com的 robots.txt 对 blog.example.com无效。每个子域名都需要自己的 robots.txt 文件。

(5)结合 Robots Meta 标签

对于页面级的精细控制,应在HTML的 <head>部分使用 robotsmeta标签,例如 <meta name="robots" content="noindex, nofollow">。

6

如何创建与检查?

(1)创建

使用任何文本编辑器(如记事本、VS Code)创建一个名为 robots.txt的纯文本文件,使用UTF-8编码保存。

(2)放置

通过FTP或网站后台文件管理器,将其上传到网站的根目录(通常是与 index.html或 wp-config.php同级的位置)。

(3)检查

直接在浏览器中访问 https://你的网站.com/robots.txt,查看内容是否正确显示。

  python爬虫须知

🔸 守规矩:爬前先看 robots.txt,尊重网站规则。

🔸 有礼貌:设置访问间隔(如 time.sleep),别把服务器挤爆。

🔸 装得像:带上合理 User-Agent和请求头,模拟真人浏览器。

🔸 不越界:绝不爬取个人隐私、机密或明确禁止的数据。

🔸 存得好:妥善处理数据,注明来源,注意脱敏。

最新文章

随机文章