В доках указано, что можно сделать последовательный запуск нескольких пауков
https://docs.scrapy.org/en/latest/topics/practices...
from twisted.internet import reactor, defer
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
from scrapy.utils.project import get_project_settings
class MySpider1(scrapy.Spider):
# Your first spider definition
...
class MySpider2(scrapy.Spider):
# Your second spider definition
...
configure_logging()
settings = get_project_settings()
runner = CrawlerRunner(settings)
@defer.inlineCallbacks
def crawl():
yield runner.crawl(MySpider1)
yield runner.crawl(MySpider2)
reactor.stop()
crawl()
reactor.run() # the script will block here until the last crawl call is finished
Там же указано, что если пауки вызывают различные реакторы, то это вызовет ошибку с twisted_reactor.
Я получаю такую ошибку:
raise error.ReactorAlreadyInstalledError("reactor already installed")
twisted.internet.error.ReactorAlreadyInstalledError: reactor already installed
Похоже, что это как раз мой случай. Вопрос, можно ли обойти эту ошибку не изменяя пауков? Если нет, то что именно является вызовом реактора в пауке?
Есть предположение, что проблема в том, что один паук работает с картой сайта и вызывает класс SitemapSpider, а второй парсит готовые ссылки, которые первый записал в csv.