Robots.txt协议详解及阅读说明
robots.txt 是网站用来让网络抓取工具知道他们是否应该抓取页面的文件。您应该尊重该偏好,因为不这样做会很容易检测到您的机器人,否则您可能会面临法律后果。
让我们学习如何在网络抓取时阅读 robots.txt!
Web Scraping 中的 robots.txt 是什么?
Robots Exclusion Protocol (REP) 将robots.txt设置为标准化文件,以指示允许抓取网站的哪些部分,Google 对其进行了推广。
以下是取自Yahoo Finance的 robots.txt 示例:
User-agent: * Sitemap: https://finance.yahoo.com/sitemap_en-us_desktop_index.xml Sitemap: https://finance.yahoo.com/sitemap_en-us_quotes_index.xml Sitemap: https://finance.yahoo.com/sitemaps/finance-sitemap_index_US_en-US.xml.gz Sitemap: https://finance.yahoo.com/sitemaps/finance-sitemap_googlenewsindex_US_en-US.xml.gz Disallow: /r/ Disallow: /_finance_doubledown/ Disallow: /nel_ms/ Disallow: /caas/ Disallow: /__rapidworker-1.2.js Disallow: /__blank Disallow: /_td_api Disallow: /_remote User-agent:googlebot Disallow: /m/ Disallow: /screener/insider/ Disallow: /caas/ Disallow: /fin_ms/ User-agent:googlebot-news Disallow: /m/ Disallow: /screener/insider/ Disallow: /caas/ Disallow: /fin_ms/
如何从网站获取 robots.txt 文件?
/robots.txt
您通常通过向网站域的根目录发送 HTTP 请求并附加到 URL 的末尾来检索网站的 robots.txt 。例如,要检索 的规则https://www.g2.com/
,您需要向 发送请求https://www.g2.com/robots.txt
。
您可以使用 cURL 或 Wget 等工具从命令行获取文件。或者,您可以这样做并使用 Python 中的 Requests 和 Beautiful Soup 库阅读它。
备注:如果您的请求失败并返回404 not found
错误,则表示该网站没有 robots.txt 文件。并非所有站点都有这样的文件。
最常见的 robots.txt 规则是什么?
robots.txt 文件指示以下网页抓取方向之一:
- 网站上的所有页面都是可抓取的。
- 不应访问任何一个。
- 某些部分或文件应保持不变。它还可以指定抓取速率限制、访问次数和请求速率。
让我们看看您会在 robots.txt 文件中找到哪些说明。
用户代理
它决定了谁可以进行网页抓取。
语法是这样的:
User-agent: [value]
Disallow: [value]
如果User-agent
有通配符 ( *
),则表示允许所有人爬行。如果包含特定名称,例如AdsBot-Google
,则表示在这种情况下仅允许使用 Google。
当Disallow
没有值时,允许所有页面进行抓取。如果您看到/
,则意味着每个页面都是不允许的。如果您看到路径或文件名,例如/folder/
或/file.html
,我们会被指出不应抓取的内容。
的替代说明Disallow
是Allow
,它说明了您应该访问的唯一资源。
抓取延迟
Crawl-delay
设置您可以抓取每个新资源的速度(以秒为单位)。这有助于网站防止服务器过载,其后果是降低人类访问者的网站速度。
Crawl-delay: 7
小心这个,因为不遵循它可能会将您标记为恶意爬虫并很容易被阻止。
访问时间
它指定可以抓取网站的时间。格式为hhmm-hhmm
,时区为UTC
。
Visit-time: 0200-1230
在这种情况下,允许机器人从 02:00 到 12:30 UTC。
请求率
它限制了爬虫可以同时向网站发出的请求数。格式为x/y
,其中x
是请求数,y
是时间间隔(以秒为单位)。
Visit-time: 1/5
例如,1/5
这意味着您只能每五秒请求一页。
网站地图
其他标签,例如Sitemap,告诉爬虫在哪里可以找到网站的 XML 站点地图。
请记住,并非所有网站都在其 robots.txt 中包含所有这些用于网络抓取机器人的规则,有些网站可能还有其他规则。
使用 robots.txt 抓取网站的步骤是什么
以下是您需要执行的操作,以尊重用于网络抓取的 robots.txt 文件:
/robots.txt
通过向网站域的根发送 HTTP 请求并添加到 URL 的末尾来检索网站的 robots.txt 。- 解析分析文件内容,了解网站的抓取规则。
- 检查网站是否为您的用户代理指定了任何“禁止”或“允许”规则。
- 查找您必须遵守的任何指定的爬网速率限制或访问时间。
- 确保您的抓取程序遵守规则。
- 按照 robots.txt 文件中设置的规则抓取网站。
备注:虽然网站所有者使用 robots.txt 来控制对其网站的访问,但您的 bot 可能会被允许但被阻止。您需要了解验证码、IP 阻止和其他可能无意中阻止您的挑战。为避免这种情况,请查看我们关于网络抓取最佳实践的文章。
使用 robots.txt 文件的优点和缺点是什么?
为了总结我们对 robots.txt 文件的概述,我们将讨论它们在网络抓取方面的优缺点。
👍优点:
- robots.txt 会通知您可以抓取哪些页面。
- 它会让您知道网站是否设置了请求速率限制或时间范围。
👎缺点:
- 如果您不遵守 robots.txt 规则,可能会采取法律行动。
- 如果您忽略该文件,您的抓取工具可能很容易被阻止。
结论
正如我们所见,阅读 robots.txt 是成功进行网络抓取和避免不必要问题的关键。此外,我们还学习了如何理解该文件。
如果您仍然被阻止,您可能面临反机器人保护。