Scrapy框架有RobotsTxtMiddleware。它需要确保Scrapy尊重robots.txt。需要在设置中设置ROBOTSTXT_OBEY = True
,然后Scrapy将尊重robots.txt政策。我做了它并且运行蜘蛛。在调试中我见过http://site_url/robot.txt的请求。
答案 0 :(得分:2)
我的回答是基于Scrapy文档的内容:
它会检测并过滤出针对在robots.txt中指定的路径的请求,因为Spider User-Agent不允许(禁止)。
响应处理是一样的。您只是不会从回调函数中的这些URL接收响应对象,因为它们不会有请求(这些请求已被过滤)
您可以在此处查看RobotsTxtMiddleware代码:https://github.com/scrapy/scrapy/blob/master/scrapy/downloadermiddlewares/robotstxt.py以了解它如何解析robots.txt文件,但如果您想了解robots.txt规则的工作原理,请查看:< / p>
答案 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