记录scrapy的一个小坑之爬虫启动后马上就自动退出

141次阅读
没有评论

共计 668 个字符,预计需要花费 2 分钟才能阅读完成。

环境

  • Mac 10.13.6
  • Python 3.6.4
  • Scrapy 1.5.0

现象

爬虫运行几秒钟就自动停止并报如下错误信息:记录 scrapy 的一个小坑之爬虫启动后马上就自动退出

原因

这其中的原因是在后来再次啃官方文档到 这里 时发现的。原因其实很简单,但我印象中这个问题卡了两天左右,所以就在这里记录一下。主要是我在执行命令 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'] 就可以让爬虫继续往下爬数据了,亲测可行。

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2018-12-21发表,共计668字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)