Scrapy Pipeline spider_opened und spider_cloded nicht aufgerufen werden
Frage
Ich habe Probleme mit einer Scrapy -Pipeline. Meine Informationen werden gekratzt, die sich in Ordnung befinden, und die Process_Item -Methode wird korrekt aufgerufen. Die Methoden Spider_Opened und Spider_closed werden jedoch nicht aufgerufen.
class MyPipeline(object):
def __init__(self):
log.msg("Initializing Pipeline")
self.conn = None
self.cur = None
def spider_opened(self, spider):
log.msg("Pipeline.spider_opened called", level=log.DEBUG)
def spider_closed(self, spider):
log.msg("Pipeline.spider_closed called", level=log.DEBUG)
def process_item(self, item, spider):
log.msg("Processsing item " + item['title'], level=log.DEBUG)
Beide __init__
und process_item
Protokollierungsnachrichten werden im Protokoll, aber die aufgegeben, aber die spider_open
und spider_close
Protokollierungsnachrichten sind nicht.
Ich muss die Methoden spider_opened und spider_closed verwenden, da ich sie zum Öffnen und Schließen einer Verbindung zu einer Datenbank verwenden möchte, aber nichts wird im Protokoll für sie angezeigt.
Wenn jemand vorgeschlagen hat, wäre dies sehr nützlich.
Lösung
Entschuldigung, ich habe es kurz nachdem ich das gepostet, gefunden. Sie müssen hinzufügen:
dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)
in __init__
Ansonsten empfängt es das Signal nie, es anzurufen
Andere Tipps
Die richtigen Methodennamen sind open_spider
und close_spider
, nicht spider_opened
und spider_closed
. Es ist hier dokumentiert: http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own-item-pipeline.