如何在 Scrapy 框架中使用 RobotsTxtMiddleware?
How to work with RobotsTxtMiddleware in Scrapy framework?
Scrapy 框架有 RobotsTxtMiddleware。它需要确保 Scrapy 尊重 robots.txt。它需要在设置中设置 ROBOTSTXT_OBEY = True
,然后 Scrapy 将遵守 robots.txt 政策。我做到了 运行 蜘蛛。在调试中我看到了对 http://site_url/robot.txt.
的请求
- 这是什么意思,它是如何工作的?
- 如何使用响应?
- 如何查看和理解 robot.txt 中的规则?
我的回答是基于 Scrapy 文档的陈述:
它检测并过滤掉针对在 robots.txt 中指定的路径的请求,因为蜘蛛用户代理不允许(禁止)。
响应处理同理。您只是不会在回调函数中收到来自这些 URL 的 Response 对象,因为不会有对它们的请求(这些请求已经被过滤)
您可以在此处查看 RobotsTxtMiddleware 代码:https://github.com/scrapy/scrapy/blob/master/scrapy/downloadermiddlewares/robotstxt.py 以了解它如何解析 robots.txt 文件,但如果您想了解 robots.txt 规则的工作原理你应该看看:
spyder 请求 robot.txt
是正常的,这就是规则所在。
robot.txt
基本上是一个你不应该 visit/crawl 的 url 的黑名单,它使用 glob/regex 种语法来指定禁止的 url .
Scapy 将读取 robot.txt
并将这些规则转换为代码。在爬行过程中,当 spyder 遇到 url 时,它首先根据 robot.txt
生成的规则验证可以访问 URL。如果 URL 没有被 robot.txt
列入黑名单,scrapy 将访问 url 并发送一个 Response
.
robot.txt
不仅是将 url 列入黑名单,它还提供了抓取发生的速度。这是一个例子 robot.txt
:
User-Agent: *
Disallow: /x?
Disallow: /vote?
Disallow: /reply?
Disallow: /submitted?
Disallow: /submitlink?
Disallow: /threads?
Crawl-delay: 30
Scrapy 框架有 RobotsTxtMiddleware。它需要确保 Scrapy 尊重 robots.txt。它需要在设置中设置 ROBOTSTXT_OBEY = True
,然后 Scrapy 将遵守 robots.txt 政策。我做到了 运行 蜘蛛。在调试中我看到了对 http://site_url/robot.txt.
- 这是什么意思,它是如何工作的?
- 如何使用响应?
- 如何查看和理解 robot.txt 中的规则?
我的回答是基于 Scrapy 文档的陈述:
它检测并过滤掉针对在 robots.txt 中指定的路径的请求,因为蜘蛛用户代理不允许(禁止)。
响应处理同理。您只是不会在回调函数中收到来自这些 URL 的 Response 对象,因为不会有对它们的请求(这些请求已经被过滤)
您可以在此处查看 RobotsTxtMiddleware 代码:https://github.com/scrapy/scrapy/blob/master/scrapy/downloadermiddlewares/robotstxt.py 以了解它如何解析 robots.txt 文件,但如果您想了解 robots.txt 规则的工作原理你应该看看:
spyder 请求 robot.txt
是正常的,这就是规则所在。
robot.txt
基本上是一个你不应该 visit/crawl 的 url 的黑名单,它使用 glob/regex 种语法来指定禁止的 url .
Scapy 将读取 robot.txt
并将这些规则转换为代码。在爬行过程中,当 spyder 遇到 url 时,它首先根据 robot.txt
生成的规则验证可以访问 URL。如果 URL 没有被 robot.txt
列入黑名单,scrapy 将访问 url 并发送一个 Response
.
robot.txt
不仅是将 url 列入黑名单,它还提供了抓取发生的速度。这是一个例子 robot.txt
:
User-Agent: *
Disallow: /x?
Disallow: /vote?
Disallow: /reply?
Disallow: /submitted?
Disallow: /submitlink?
Disallow: /threads?
Crawl-delay: 30