Web Scraping 指南的 Robots.txt 文件

在本指南中,您将了解 robots.txt,它为何对网络爬虫很重要,以及如何在爬虫过程中使用它。
2 min read
终极指南:用于网页抓取的 Robots.txt

本 Robots.txt 网络爬虫指南将涵盖:

  • 什么是 robots.txt?
  • 为什么它对网络爬虫很重要?
  • 忽略它进行爬虫的后果
  • 网络爬虫需要了解的常见指令
  • 如何在网络爬虫过程中使用它

什么是 robots.txt?

robots.txt 是一个用于实施 Robots 排除协议 (REP) 的文本文件,这是一种用于指示网络机器人如何与网站交互的标准。具体来说,robots.txt 指定了哪些机器人可以访问该网站,哪些页面和资源他们可以访问,访问的频率等。这些机器人通常是搜索引擎如 Google、Bing 和 DuckDuckGo 用于索引网络的网络爬虫。

根据 Google 规范,每个域(或子域)都可以有一个 robots.txt 文件。这是可选的,必须放置在域的根目录中。换句话说,如果网站的基本 URL 是 https://example.com,那么 robots.txt 文件将位于 https://example.com/robots.txt。

例如,以下是 Bright Data 的 robots.txt 文件内容:

User-agent: *

Disallow: /lum/

Disallow: /www/*.html

Disallow: /use-cases/fintech

Disallow: /products/datasets2/

Disallow: /events/*

Disallow: /wp-stage/*

Disallow: /www/*

Disallow: /svc/*

Host: brightdata.com

Sitemap: https://brightdata.com/sitemap_index.xml

如你所见,这只是一个包含了一组针对网络机器人的规则和指令的文本文件。

请注意,像 User-agent 和 Disallow 这样的指令不区分大小写。相反,值是区分大小写的。所以 /lum/ 与 /Lum/ 是不同的。

为什么它对网络爬虫很重要?为什么它对网络爬虫很重要?

robots.txt 文件提供的指令不仅仅针对搜索引擎爬虫机器人。这也包括所有与网站交互的自动化软件,包括 网络爬虫。归根结底,爬虫程序只不过是自动化的机器人而已。而且,它们通常像搜索引擎机器人一样进行网络爬行。你可以在我们的 网络爬行与网络爬虫对比指南 中了解更多。

因此,在进行网站爬虫时,必须尊重目标网站的 robots.txt 文件。这意味着:

  • 法律合规:网络爬虫应遵守网站所有者定义的规则,以采取道德的网络爬虫方法。
  • 减少服务器负载:爬虫和爬虫程序消耗大量资源,遵守指令有助于防止网站过载。
  • 避免触发反机器人措施:许多网站监控传入的网络流量,以阻止不遵守声明规则的未经授权的机器人。

现在问题是,如果你的爬虫脚本不遵守 robots.txt,会发生什么?让我们在下面的部分中找到答案!

忽略 robots.txt 进行网站爬虫的后果忽略 robots.txt 进行网站爬虫的后果

网站对违反其 robots.txt 文件的行为反应非常不同。有时,什么都不会发生。其他时候,你可能会面临严重后果。一般来说,这里是忽略 robots.txt 进行网络爬虫时需要考虑的情况:

  • 阻止和中断操作:反爬虫和反机器人技术可能会暂时或永久禁止你的 IP 地址。这会影响爬虫过程的效率。
  • 法律行动:如果不遵守规定,可能会面临法律诉讼。这可能在爬虫脚本留下的指纹可以揭示你的身份时发生。使用 网络爬虫代理保护你的隐私吧!
  • 增加审查:网络安全专业人员、ISP 和网络安全组织可能会开始调查你的爬虫活动。

这些只是一些例子,但足以让你理解问题的重要性。要遵守 robots.txt,首先必须理解其指令的含义。现在开始深入了解!

网络爬虫需要了解的常见 robots.txt 指令网络爬虫需要了解的常见 robots.txt 指令

REP 规范仅涉及 robots.txt 文件可以指定的几个指令。随着时间的推移,搜索引擎规范引入了其他可能的规则。这些规则代表了 事实上的 标准,必须加以考虑。

现在,看看最相关的 robots.txt 网络爬虫指令。

User-agent

User-Agent 指定了哪些用户代理可以抓取网站。用户代理可以是网络爬虫、蜘蛛、爬虫程序或任何机器人。通常,网站管理员使用此指令限制或指导特定搜索引擎的爬虫。

指令的语法是:

User-agent: <user_agent_name>

Disallow: [value]

如果 <user_agent_name> 是 *,则意味着任何机器人都可以与该网站交互。Disallow 指令必须包含相对路径并限制对这些特定部分的访问。

常见的用户代理字符串包括:

搜索引擎 User-agent 名称
百度 baiduspider
Bing bingbot
谷歌 Googlebot
雅虎 slurp
Yandex yandex

请看下面的例子:

User-agent: *

Disallow: /private/

上述 robots.txt 文件禁止所有用户代理访问 /private/ 路径下的页面。因此,/private/admin-login.php 被禁止,但 /private/platform/dashboard.php 也被禁止。这意味着子文件夹内的文件也受到 Disallow 规则的影响。

注意,相同的 User-agent 可以有多个 Disallow 规则:

User-agent: *

Disallow: /private/

Disallow: /admin/

这次,/private/ 和 /admin/ 路径都被禁止访问。

当 Disallow 没有值时,所有页面都可以访问:

User-agent: *

Disallow:

如果它包含 / 值,则意味着所有页面都被禁止:

User-agent: *

Disallow: /

robots.txt 标准的正式标准中没有提到 Disallow 的正则表达式或通配符,但所有主要搜索引擎都期望它们。所以,通常会看到类似以下内容:

Disallow: /*.php 

Disallow: /resources/*.pdf 

这可以防止你的机器人访问 /resources/ 下的 PDF 文件和 PHP 文件。

一种非标准的与 Disallow 相反的指令是 Allow,它指定了唯一允许的路径。请看以下示例:

User-agent: *

Allow: /

这相当于:

User-agent: *

Disallow:

Allow 可以覆盖 Disallow 阻止的特定路由:

User-agent: *

Disallow: /private/

Allow: /private/terms-and-conditions.php

在这个 robots.txt 示例中,/private/ 下的所有页面都被禁止,除了 /private/terms-and-conditions.php。

请注意,同一个 robots.txt 文件可以有多个 User-agent 指令,以针对不同的网络机器人:

User-agent: Googlebot

Disallow: 

User-agent: bingbot

Disallow: /blog/

Sitemap

Sitemap 是一个非标准指令,包含网站 XML 网站地图的位置:

Sitemap: https://www.example.com/sitemap.xml

此规则通知机器人关于 XML 网站地图的位置,网站地图提供了关于网站结构的有用信息。遵循网站地图中包含的 URL 可以更轻松地抓取整个网站。 探索我们的网站地图爬虫!

请注意,指向网站地图文件的 URL 必须是绝对的。

由于网站可以有多个网站地图,robots.txt 可以包含多个 Sitemap 指令:

Sitemap: https://www.example.com/sitemaps/page-sitemap.xml

Sitemap: https://www.example.com/sitemaps/post-sitemap.xml

Sitemap: https://www.example.com/sitemaps/author-sitemap.xml

Crawl-delay

非官方且不常用的 Crawl-Delay 指令定义了网络爬虫在连续请求网站之间应等待的秒数:

User-agent: *

Crawl-delay: 5

这是一个特定于用户代理的指令,目的是防止服务器过载。在这个例子中,所有用户代理被指示在访问页面之间等待 5 秒的延迟。

Request-rate

罕见、特定于用户代理的非标准 Request-Rate 指令指定了用户代理在指定时间段内可以对网站进行的最大请求数:

User-agent: *

Request-rate: 1/10

例如,这条规则指示所有用户代理将其请求限制为每 10 秒一次。

Request-rate 值的格式是:

<number_of_request>/<seconds>

这个指令类似于 Crawl-Delay,两者都帮助避免服务器过载。主要区别在于 Crawl-delay 通过施加延迟来实现这一目标,而 Request-rate 通过实施速率限制来实现。

如何在网络爬虫过程中使用 robots.txt

现在你已经了解了 robots.txt 是什么以及它的工作原理。接下来就是看看如何在网络爬虫过程中整合其使用。以下是你需要做的,以遵守robots.txt 文件进行网络爬虫:

  1. 获取目标网站的 robots.txt 文件
    • 发送 HTTP GET 请求到 /robots.txt 路径以下载该文件,或在浏览器中打开它。
  2. 检查其内容
    • 阅读 robots.txt 文件中包含的指令。
    • 检查是否有 Disallow 规则限制访问特定 URL 或目录。
    • 查看是否有 Allow 规则可能允许访问禁止路径内的某些区域。
    • 检查是否指定了 Crawl-delay 和 Request-rate 指令。
  3. 构建你的爬虫脚本
    • 创建或修改你的爬虫,确保它遵守 robots.txt 中设置的规则。
    • 避免访问不允许你用户代理访问的 URL。
    • 在爬虫中实施节流机制,以遵守 Crawl-delay 或 Request-rate 限制。

正如你所见,在构建爬虫之前,必须分析 robots.txt 中包含的指令。只有这样,你才能避免之前提到的后果。

就这样!你现在是 robots.txt 网络爬虫专家了!

结论

在本文中,你了解了什么是 robots.txt,为什么网站会使用它,以及它如何帮助你的爬虫避免被阻止。具体来说,你分析了可能影响你的在线数据检索目标的指令。你还学会了如何围绕它构建一个道德的爬虫过程。

不幸的是,不管你的脚本多么遵守 robots.txt,反爬虫解决方案仍然可能阻止你。如何避免这种情况?使用 代理服务器。市场上有几种提供商,尝试它们会花费几个月的时间。幸运的是,我们为你解决了这个问题。

Bright Data 拥有最好的代理服务器,为超过 20,000 名客户和财富 500 强公司服务。其卓越的全球代理网络包括:

总的来说,这是市场上最大的、最可靠的面向爬虫的代理基础设施之一。与我们的销售代表之一联系,看看 Bright Data 的产品哪一个最适合你的需求。