1.关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。
原因:
scrapy抓包时的输出可以发现,在请求设定的url之前,它会先向服务器根目录请求一个txt文件:
2017-10-25 21:10:22 [scrapy] DEBUG: Crawled (200) <GET https://item.taobao.com/robots.txt> (referer: None)
这个文件中规定了本站点允许的爬虫机器爬取的范围,因为默认scrapy遵守robot协议,所以会先请求这个文件查看自己的权限,出错是因为使用的爬虫爬取内容违背这个robot.txt。所以只要让爬虫不遵守该协议就好了,具体做法是找到settings文件里的ROBOTSTXT_OBEY设置成False。
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
2. self.file = open(“music1.html”, “a”,encoding=“utf-8”),写入HTML文件时要加入encoding="utf-8"
3. DEBUG: Filtered offsite request to
原因:allowed_domains的过滤
方法:将allowed_domains = [‘www.zhenai.com’]更改为allowed_domains = [‘zhenai.com’] 即更换为对应的一级域名