另一件事是调用 .extract() 的结果是一个列表,因为我们处理的是 SelectorList 的一个实例。当您知道你只想要第一个结果,在这种情况下,您可以做:
>>> response.css(‘title::text‘).extract_first()
‘Quotes to Scrape‘
此外,您还可以这样做:
>>> response.css(‘title::text‘)[0].extract()
‘Quotes to Scrape‘
使用 .extract_first() 会避免 IndexError ,并且在找不到与选择匹配的元素时返回 None 。
先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。
使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息Forbidden by robots.txt,看来是请求被拒绝了。
这个文件中规定了本站点允许的爬虫机器爬取的范围(比如你不想让百度爬取你的页面,就可以通过robot来限制),因为默认scrapy遵守robot协议,所以会先请求这个文件查看自己的权限,而我们现在访问这个url得到
参考资料:爬虫出现Forbidden by robots.txt
原文:https://www.cnblogs.com/ministep/p/14589521.html