Scrapy Spider Закрыть - PullRequest
       13

Scrapy Spider Закрыть

0 голосов
/ 12 февраля 2019

У меня есть скрипт, который мне нужно запустить после закрытия моего паука.Я вижу, что в Scrapy есть обработчик spider_closed (), но я не понимаю, как включить это в мой скрипт.Что я хочу сделать, так это когда скребок будет ползать, и я хочу объединить все мои CSV-файлы, которые они загружают на листы.Если у кого-то есть примеры, это можно сделать, было бы замечательно.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Согласно комментариям к моему другому ответу о решении на основе сигналов , вот способ запустить некоторый код после того, как несколько пауков сделаны.Это не связано с использованием сигнала spider_closed.

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings


process = CrawlerProcess(get_project_settings())
process.crawl('spider1')
process.crawl('spider2')
process.crawl('spider3')
process.crawl('spider4')
process.start()

# CSV combination code goes here. It will only run when all the spiders are done.
# ...
0 голосов
/ 12 февраля 2019

В соответствии с примером в документации , вы добавляете в Spider следующее:

# This function remains as-is.
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
    spider = super().from_crawler(crawler, *args, **kwargs)
    crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed)
    return spider

# This is where you do your CSV combination.
def spider_closed(self, spider):
    # Whatever is here will run when the spider is done.
    combine_csv_to_sheet()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...