scrapyをクロール同時に複数のタスクを実行する方法のPythonの爬虫類scrapy

背景:

  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

おすすめ

転載: www.cnblogs.com/yunlongaimeng/p/11526466.html