环境
- 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']
如下:
1 2 3 4 5 |
class HnzjSpider(scrapy.Spider): name = 'hnzj' news_item = HezhinewsItem() allowed_domains = ['hnzj.com'] |
但是实际上start_request()方法中定义的起始url域名却是hnzj.edu.cn
,如下:
1 2 3 4 5 |
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']
就可以让爬虫继续往下爬数据了,亲测可行。