背景:
scrapyクローラフレームを学習の開始時に、ちょうど私がクローラー・サーバー上でタスクを実行する場合は、彼が過去に言ったと思います。しかし、私は今、新しいプロジェクトのすべての爬虫類のタスクをすることはできません。例えば、私は、ほとんどクロール知っているが、私は、このタスクでクロールタスクを設立クモ以上のものを書いて、重要なのは、私は彼らがどのように行う、同時に実行したいですか?
ホワイトソリューション:
図1に示すように、同じディレクトリに新しいファイルrun.pyスパイダー、次のように(--nologように、最後に添加することができるパラメータのリスト)
2、ホワイト(当時I)、これもOKですが、私はまだライン上のライン上の数行を記述しないことをmygod、結果whileループを追加します(結果馬鹿)、白考え、爬虫類と思いました名前のリストを作成するので、各サイクルのスパイダーは名前を取得、結果はさらに悪化しました。
3、次のコマンドは、単一のクモや高速のデバッグクロールタスクの作用の下でプロジェクトに制限されています。
1
2
3
|
from
scrapy.cmdline
import
execute
execute([
'scrapy'
,
'crawl'
,
'httpbin'
])
|
オリジナルを知って学習することで、このようなものです:
1のような同じレベルの任意のディレクトリスパイダー作成:コマンド
crawlall.pyファイルを作成するには2、(ファイル名はカスタムコマンドです)
crawlall.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
from
scrapy.commands
import
ScrapyCommand
from
scrapy.utils.project
import
get_project_settings
class
Command(ScrapyCommand):
requires_project
=
True
def
syntax(
self
):
return
'[options]'
def
short_desc(
self
):
return
'Runs all of the spiders'
def
run(
self
, args, opts):
spider_list
=
self
.crawler_process.spiders.
list
()
for
name
in
spider_list:
self
.crawler_process.crawl(name,
*
*
opts.__dict__)
self
.crawler_process.start()
|
3、ここで終わり、settings.pyは、構成ファイルを追加する必要はありません。
COMMANDS_MODULE =「プロジェクト名。ディレクトリ名」
COMMANDS_MODULE = 'zhihuuser.commands'
4私はタスクスパイダーのクロールよりも多くを書いた場合、その後の質問は、そんなに私は最終的に、そう簡単に実行する方法を必要とする、上記の言いました!あなただけの行に、内部のスケジュールされたタスクには、次のコマンドを入れることができます。
scrapy crawlall