hereとhereから読み、同じプロセスで実行されている複数のスパイダーを機能させました。
ただし、すべてのスパイダーが終了したときにリアクターを停止するための信号システムを設計する方法がわかりません。
私のコードは、次の例と非常によく似ています。
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log
from testspiders.spiders.followall import FollowAllSpider
def setup_crawler(domain):
spider = FollowAllSpider(domain=domain)
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
for domain in ['scrapinghub.com', 'insophia.com']:
setup_crawler(domain)
log.start()
reactor.run()
すべてのクローラーが停止した後も、リアクターはまだ稼働しています。ステートメントを追加すると
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
setup_crawler 関数に対して、reactor は最初のクローラーが閉じたときに停止します。
すべてのクローラーが終了したときに原子炉を停止させる方法を教えてくれる人はいますか?