环境
- Mac 10.13.6
- Python 3.6.4
- Scrapy 1.5.0
现象
爬虫运行几秒钟就自动停止并报如下错误信息:
原因
这其中的原因是在后来再次啃官方文档到
这里时发现的。
原因其实很简单,但我印象中这个问题卡了两天左右,所以就在这里记录一下。
主要是我在执行命令scrapy genspider hnzj
时额外指定了网站域名为hnzj.com
也即是scrapy genspider hnzj hnzj.com
,于是生成的默认爬虫代码中多了一行
allowed_domains = ['hnzj.com']
如下:
class HnzjSpider(scrapy.Spider):
name = 'hnzj'
news_item = HezhinewsItem()
allowed_domains = ['hnzj.com']
但是实际上start_request()方法中定义的起始url域名却是hnzj.edu.cn
,如下:
def start_requests(self):
urls = ['http://www.hnzj.edu.cn/xyxw.htm']
for url in urls:
yield scrapy.Request(url, callback=self.list_page_parser)
由于二者域名不同,所以scrapy就直接自动关闭不再往下爬数据了。
解决
最简单除暴的办法是直接删除掉allowed_domains = ['hnzj.com']
这一行,当然也可以改成['hnzj.edu.cn']
就可以让爬虫继续往下爬数据了,亲测可行。