Вопрос

У меня есть некоторые проблемы с скребкой. Моя информация - это скрещенные сайты формы OK, и метод Process_Item называется правильно. Однако методы SPIDER_OPEND и SPIDER_CLED не вызываются.

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)

Оба __init__ а также process_item Сообщения регистрации рассеяются в журнале, но spider_open а также spider_close Регистрационные сообщения нет.

Мне нужно использовать методы SPADER_OPEND и SPIDER_CLED, так как я хочу использовать их для открытия и закрытия соединения с базой данных, но в журнале для них ничего не отображается.

Если у кого -то есть какое -либо предложение, это было бы очень полезно.

Это было полезно?

Решение

Извините, нашел это сразу после того, как я опубликовал это. Вы должны добавить:

dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)

в __init__ в противном случае он никогда не получает сигнал, чтобы вызвать его

Другие советы

Правильные названия методов open_spider а также close_spider, нет spider_opened а также spider_closed. Анкет Это задокументировано здесь: http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own-item-pipeline.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top