как вызвать метод после того, как закончится скрапсинг по всем ссылкам - PullRequest
0 голосов
/ 19 октября 2018

Я использую Scrapy для сканирования сайтов и хочу написать конкретные ссылки на файл.Я создал набор ссылок, которые хочу написать, и храню их в переменной своего класса.Как я могу запустить метод write_to_file после завершения сканирования?

class MainSpider(CrawlSpider):
name = 'spiderName'
allowed_domains = [DOMAIN_NAME]
start_urls = [STARTING_URL]
product_links = set()
rules = (
    # call parse_link on all links from starting url
    Rule(LinkExtractor(), callback='parse_link', follow=True),)
print("product link size is " + str(len(product_links)))
write_to_file(name, product_links)

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете зарегистрировать прослушиватель сигнала через dispatcher.

Я бы попробовал что-то вроде:

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 instance of spider that is about to be closed.
...