Код, который вы используете из документов , запускает несколько пауков в одном и том же процессе с использованием внутреннего API, поэтому возникает проблема, если вам нужно дождаться окончания первого паука, прежде чем запускать второй.
Если это весь охват проблемы, мои предложения будут заключаться в том, чтобы хранить данные первого паука в месте, где его может использовать второй (база данных, csv, jsonlines), и переносить эти данные во второй spider run, либо в определении паука (где определено name
, либо если у вас есть подклассы scrapy.Spider, может быть, в __init__
) или в методе start_requests()
.
Затем вам нужно будет запустить пауков последовательно, вы можете увидеть, как CrawlerRunner () связывает отложенный метод в разделе общие практики в документации.
configure_logging()
runner = CrawlerRunner()
@defer.inlineCallbacks
def crawl():
yield runner.crawl(MySpider1)
yield runner.crawl(MySpider2)
reactor.stop()
crawl()
reactor.run()