如何在Scrapy框架中使用RobotsTxtMiddleware?

时间:2015-05-23 16:35:22

标签: python scrapy robots.txt

Scrapy框架有RobotsTxtMiddleware。它需要确保Scrapy尊重robots.txt。需要在设置中设置ROBOTSTXT_OBEY = True,然后Scrapy将尊重robots.txt政策。我做了它并且运行蜘蛛。在调试中我见过http://site_url/robot.txt的请求。

  1. 这是什么意思,它是如何运作的?
  2. 我如何处理回复?
  3. 如何查看和理解robot.txt中的规则?

2 个答案:

答案 0 :(得分:2)

我的回答是基于Scrapy文档的内容:

  1. 它会检测并过滤出针对在robots.txt中指定的路径的请求,因为Spider User-Agent不允许(禁止)。

  2. 响应处理是一样的。您只是不会从回调函数中的这些URL接收响应对象,因为它们不会有请求(这些请求已被过滤)

  3. 您可以在此处查看RobotsTxtMiddleware代码:https://github.com/scrapy/scrapy/blob/master/scrapy/downloadermiddlewares/robotstxt.py以了解它如何解析robots.txt文件,但如果您想了解robots.txt规则的工作原理,请查看:< / p>

    http://www.robotstxt.org/norobots-rfc.txt

答案 1 :(得分:2)

spyder请求robot.txt规则所在的位置是正常的。

robot.txt基本上是一个url黑名单,你不应该访问/抓取使用glob / regex语法来指定禁用的URL。

Scapy会阅读robot.txt并将这些规则转换为代码。在spyder遇到url的爬网过程中,它首先验证从robot.txt生成的可以访问URL的规则。如果该网址未被robot.txt sclist列入黑名单,则会访问该网址并发送Response

robot.txt不仅会将网址列入黑名单,还会提供抓取速度。以下是robot.txt示例:

User-Agent: * 
Disallow: /x?
Disallow: /vote?
Disallow: /reply?
Disallow: /submitted?
Disallow: /submitlink?
Disallow: /threads?
Crawl-delay: 30