私はalgorithm.pyというスクリプトを持っています。スクリプト中にScrapyスパイダーを呼びたいと思っています。ファイルscructureは次のとおりです。MySpidersは、いくつかのscrapyプロジェクトを含むフォルダである MySpiders/別のPythonスクリプトから特定のScrapyスパイダーを呼び出す方法
algorithm.py
。私はperform_spider1()、perform_spider2()...アルゴリズムを呼び出すことができるメソッドを作成したいと思います。
このメソッドを作成するにはどうすればよいですか?
私は、次のコードを使用して1つのスパイダーを呼び出すことができましたが、方法ではなく、1つのスパイダーに対してのみ機能します。私は助けが必要な初心者です!
import sys,os.path
sys.path.append('path to spider1/spider1')
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log, signals
from scrapy.xlib.pydispatch import dispatcher
from spider1.spiders.spider1_spider import Spider1Spider
def stop_reactor():
reactor.stop()
dispatcher.connect(stop_reactor, signal=signals.spider_closed)
spider = RaListSpider()
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
log.msg('Running reactor...')
reactor.run() # the script will block here
log.msg('Reactor stopped.')
ありがとう、alecxe!最後のスパイダーの後に原子炉を止めるにはどうすればいいですか?現在、私は)( デフstop_reactorを使用しています: reactor.stop() dispatcher.connect(stop_reactor、信号= signals.spider_closed) はしかし、これはあなたが歓迎されている最初のクモ... –
後に停止します。良い質問!どのようにスパイダーの追跡を 'stop_reactor'で手動で閉じて、すべてが閉じていれば原子炉を停止するのですか? Btw、私は答えを編集し、関連するスレッドへのリンクを含めました。 – alecxe
ありがとう、仲間。私はあなたに投票するのに十分な評判を持っていませんが、私は道徳的に投票します:) –