Отправить уведомление по электронной почте с помощью Scrapy после того, как несколько пауков закончили сканирование - PullRequest
1 голос
/ 03 марта 2020

Просто интересно, как лучше всего это реализовать. У меня есть 2 паука, и я хочу отправить оповещение по электронной почте в зависимости от того, что будет очищено после того, как 2 паука закончили ползать.

Я использую скрипт на основе учебника для запуска обоих пауков следующим образом:

if __name__ == "__main__":
    process = CrawlerProcess(get_project_settings())
    process.crawl(NqbpSpider)
    process.crawl(GladstoneSpider)
    process.start() # the script will block here until the crawling is finished

Лучше ли вызывать функцию электронной почты после process.start () или кодировать функцию электронной почты в файле pipelines.py под функцией close_spider

def close_spider(self, spider):

1 Ответ

1 голос
/ 03 марта 2020

Вы можете использовать это

from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher

class MySpider(CrawlSpider):
    def __init__(self):
        dispatcher.connect(self.spider_closed, signals.spider_closed)

    def spider_closed(self, spider):
      # second param is the instance of the spider about to be closed.
      #  Write the mail sending part here

Если вы хотите включить очищенные данные в почту, напишите сценарий в файле pipelines.py.

class MyPipeline(Pipeline):
    spider = None

    def process_item(self, item, spider):
        if spider.name == 'Name of the spider':
            # Use the data and send the mail from here
        return item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...