#框架扩展,在某些位置加入自定制功能,类似于面向切面编程 #参考原扩展类自定义类 #from scrapy.extensions.telnet import TelnetConsole
自定义extensions.py
from scrapy import signals
#框架扩展,在某些位置加入自定制功能
#from scrapy.extensions.telnet import TelnetConsole
class MyExtend:
def __init__(self, crawler):
self.crawler = crawler
#注册信号
self.crawler.signals.connect(self.spider_start, signals.spider_opened) #爬虫开始的时候做某些动作
self.crawler.signals.connect(self.engine_start, signals.engine_started) #爬虫开始的时候做某些动作
self.crawler.signals.connect(self.engine_stop, signals.engine_stopped) #引擎关闭的时候做特殊多动作
@classmethod
def from_crawler(cls, crawler):
return cls(crawler)
def spider_start(self):
print("signals.spider_opened")
def engine_start(self):
print("signals.engine_started")
def engine_stop(self):
print("signals.engine_stopped")
settings.py进行配置:
# Enable or disable extensions
# See https://doc.scrapy.org/en/latest/topics/extensions.html
EXTENSIONS = {
#'scrapy.extensions.telnet.TelnetConsole': None,
'spider1.extensions.MyExtend':300,
}
运行结果: