scrapy中间件与itempipline组件使用问题?
收藏
新版scrapy中,自定义中间件方法直接使用spider_opened,spider_closed 以及pipline中的open_spider,close_spider方法
可能出现如下图这样一个奇怪的问题
回答
MrSun回答
解决方法:
spider_opened,spider_closed,open_spider,close_spider 这几个方法本质是信号处理函数,正常来说scrapy框架已经注册过,不需要我们手动注册,如果出现上面描述的情况,那么需要我们手动注册后就可以了方法如下,实现类中的from_crawler方法
# 中间件编写方式
@classmethod
def from_crawler(cls, crawler):
s = cls()
crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
crawler.signals.connect(s.spider_closed, signal=signals.spider_closed)
return s
# pipline中from_crawler
@classmethod
def from_crawler(cls, crawler):
pipline = cls()
crawler.signals.connect(pipline .open_spider, signal=signals.spider_opened)
crawler.signals.connect(pipline .close_spider, signal=signals.spider_closed)
return pipline
(0)
相似问题