6

algorithm.py というスクリプトがあり、スクリプト中に Scrapy スパイダーを呼び出せるようにしたいと考えています。ファイル構造は次のとおりです。

algorithm.py MySpiders/

MySpiders は、いくつかのスクレイピー プロジェクトを含むフォルダーです。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.')
4

2 に答える 2

5

configureスパイダーを調べて、 、crawlandを呼び出して設定し、その後でandstartを呼び出すだけです。そして、scrapy は同じプロセスで複数のスパイダーを実行します。log.start()reactor.run()

詳細については、ドキュメントこのスレッドを参照してください。

また、scrapyd経由でスパイダーを実行することを検討してください。

それが役立つことを願っています。

于 2013-06-08T11:04:10.110 に答える