200以上のスパイダーを一度に実行するための私のソリューションは、プロジェクトのカスタムコマンドを作成することでした。カスタムコマンドの実装の詳細については、http://doc.scrapy.org/en/latest/topics/commands.html#custom-project-commandsを参照してください。
YOURPROJECTNAME /コマンド/ allcrawl.py:
from scrapy.command import ScrapyCommand
import urllib
import urllib2
from scrapy import log
class AllCrawlCommand(ScrapyCommand):
requires_project = True
default_settings = {'LOG_ENABLED': False}
def short_desc(self):
return "Schedule a run for all available spiders"
def run(self, args, opts):
url = 'http://localhost:6800/schedule.json'
for s in self.crawler.spiders.list():
values = {'project' : 'YOUR_PROJECT_NAME', 'spider' : s}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
log.msg(response)
(プロジェクトディレクトリ内)コマンドラインからその後、あなたのsettings.pyに
COMMANDS_MODULE = 'YOURPROJECTNAME.commands'
を次のものが含まれていることを確認します簡単に入力できます
scrapy allcrawl
出典
2012-05-29 18:02:14
dru
偉大な、私はこの最初のことを朝にしよう。私は現時点ではコンピュータがありません。助けてくれてありがとう! – user1009453
こんにちは。解決方法を試しましたが、次のエラーが表示されます。 インポートエラー:モジュール名のないコマンド プロジェクトディレクトリの設定ファイルに "COMMANDS_MODULE = 'YOURPROJECTNAME.commands'という行を挿入しました。これは正しいです? – user1009453
@ user1009453あなたのコマンドフォルダに '__init __。py'があることを確認してください – dru