在scrapy settings.py文件中有这样的一条默认开启的语句:
# Obey robots.txt rules
ROBOTSTXT_OBEY = True
默认为True,就是要遵守robots.txt 的规则. 通俗来说, robots.txt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页 不希望 你进行爬取收录。在Scrapy启动后,会在第一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。但是在某些情况下我们想要获取的内容恰恰是被 robots.txt 所禁止访问的。所以我们就要将此配置项设置为 False ,拒绝遵守 Robot协议 .
淘宝Robots文件:https://www.taobao.com/robots.txt
这个文件中规定了本站点允许的爬虫机器爬取的范围,因为默认scrapy遵守robot协议,所以会先请求这个文件查看自己的权限,而我们现在访问这个url得到
User-agent: *
Disallow: /
可以看见,淘宝disallow根目录以下所有页面。所以scrapy就停止了之后的请求和页面解析。
我们在setting改变ROBOTSTXT_OBEY为False,让scrapy不要遵守robot协议,之后就能正常爬取了。