本 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 文件进行网络爬虫:
- 获取目标网站的 robots.txt 文件:
- 发送 HTTP GET 请求到 /robots.txt 路径以下载该文件,或在浏览器中打开它。
- 检查其内容:
- 阅读 robots.txt 文件中包含的指令。
- 检查是否有 Disallow 规则限制访问特定 URL 或目录。
- 查看是否有 Allow 规则可能允许访问禁止路径内的某些区域。
- 检查是否指定了 Crawl-delay 和 Request-rate 指令。
- 构建你的爬虫脚本:
- 创建或修改你的爬虫,确保它遵守 robots.txt 中设置的规则。
- 避免访问不允许你用户代理访问的 URL。
- 在爬虫中实施节流机制,以遵守 Crawl-delay 或 Request-rate 限制。
正如你所见,在构建爬虫之前,必须分析 robots.txt 中包含的指令。只有这样,你才能避免之前提到的后果。
就这样!你现在是 robots.txt 网络爬虫专家了!
结论
在本文中,你了解了什么是 robots.txt,为什么网站会使用它,以及它如何帮助你的爬虫避免被阻止。具体来说,你分析了可能影响你的在线数据检索目标的指令。你还学会了如何围绕它构建一个道德的爬虫过程。
不幸的是,不管你的脚本多么遵守 robots.txt,反爬虫解决方案仍然可能阻止你。如何避免这种情况?使用 代理服务器。市场上有几种提供商,尝试它们会花费几个月的时间。幸运的是,我们为你解决了这个问题。
Bright Data 拥有最好的代理服务器,为超过 20,000 名客户和财富 500 强公司服务。其卓越的全球代理网络包括:
- 数据中心代理 – 超过 770,000 个数据中心 IP。
- 住宅代理 – 超过 7200 万个住宅 IP,遍布 195 多个国家。
- ISP 代理 – 超过 700,000 个 ISP IP。
- 移动代理 – 超过 700 万个移动 IP。
总的来说,这是市场上最大的、最可靠的面向爬虫的代理基础设施之一。与我们的销售代表之一联系,看看 Bright Data 的产品哪一个最适合你的需求。