spiderの開始時、終了時にフックさせるような関数を書く方法です。
以下の内容をプロジェクトの直下に配置します。
import scrapy
class SpiderHook(object):
@classmethod
def from_crawler(cls, crawler):
ext = cls
crawler.signals.connect(ext.spider_opened, signal=scrapy.signals.spider_opened)
crawler.signals.connect(ext.spider_closed, signal=scrapy.signals.spider_closed)
return ext
def spider_opened(self, spider):
# spider開始時の処理
def spider_closed(self, spider):
# spider終了時の処理
そして、settings.pyにこのクラスを読み込む設定を書きます。
EXTENSIONS = {
'<project name>.<file name>. SpiderHook': 100,
}