Scrapy запускает два сканера последовательно, где второй сканер получает данные от первого - PullRequest
0 голосов
/ 17 апреля 2020

Я столкнулся с проблемой, которая была опубликована здесь несколько раз. То есть я пытаюсь запустить два процесса искателя в одном скрипте и получаю ошибку ReactorNotRestartable.

Ответы, которые я видел, предоставляют способы запуска пауков одновременно или последовательно, но без каких-либо параметров, передаваемых в середина. Мне нужно запустить одного паука, выполнить некоторую работу с выводом, а затем запустить второго паука с набором параметров в зависимости от вывода первого паука. Вот мой псевдокод:

def do_shallow_scrape():
    results = []

    def crawler_results(signal, sender, item, response, spider):
        results.append(item)

    dispatcher.connect(crawler_results, signal=signals.item_passed)

    process = CrawlerProcess(get_project_settings())
    process.crawl('list')
    process.start()
    return results


def do_details_scrape(ids):
    results = []

    def crawler_results(signal, sender, item, response, spider):
        results.append(item)

    dispatcher.connect(crawler_results, signal=signals.item_passed)

    process = CrawlerProcess(get_project_settings())
    process.crawl('details', ids=ids)
    process.start()
    return results


def coordinate_scrape():
    shallow_results = do_shallow_scrape()
    ids = some_script(shallow_results)
    details = do_details_scrape(ids)

Заранее спасибо за помощь!

...