2012-06-08 22 views
7
  1. たとえば、私は異なるHTMLを含む2つのURLを持っていました。今私は2つの個々のスパイダーをそれぞれ1つずつ書きたいと思いますし、両方のスパイダーを一度に実行したいと思います。治療では、一度に複数のスパイダーを走らせることが可能です。 scrapyで複数のスパイダーを治療中に実行する

  2. 複数のクモを書いた後、どのように我々は、uがどのように私を提案することができ、私は上記の知りませんでした

(cronジョブ等であってもよい)、6時間ごとのために実行するようにスケジュールすることができます例で上記のことを実行してください。

ありがとうございます。

答えて

2

OSレベルからすぐに2つの治療スクリプトを一度に実行するのが一番簡単です。両方とも同じデータベースに保存できる必要があります。それらを同時に行うために、両方のscrapyスクリプトを呼び出すためにシェルスクリプトを作成します。

scrapy runspider foo & 
scrapy runspider bar 

は端末にcronジョブごとに6時間、タイプcrontab -eをスケジュールするにはchmod +x script_name

で、このスクリプトを実行可能にしてください次のように、ファイルを編集します。

* */6 * * * path/to/shell/script_name >> path/to/file.log 

最初の*は、など、その後数分、数時間、で、アスタリスクはワイルドカードです。だから、この時間は、6時間ごとに、または6時間ごとに割り切れる時間に、いつでもスクリプトを実行するということです。

+0

お返事いただきありがとうございます。私はこれを尋ねていますが、もっと助けてもらえるように、このコード例を与えることができます。 –

1

を処理するためにscrapydを使用する必要がありますあなたはCrawlerProcess

from scrapy.utils.project import get_project_settings 
from scrapy.crawler import CrawlerProcess 

from myproject.spiders import spider1, spider2 

1Spider = spider1.1Spider() 
2Spider = spider2.2Spider() 
process = CrawlerProcess(get_project_settings()) 
process.crawl(1Spider) 
process.crawl(2Spider) 
process.start() 

を使用して試すことができますが、クロールの完全なログを表示したい場合は、あなたのsettings.pyLOG_FILEを設定します。

LOG_FILE = "logs/mylog.log" 
+0

ありがとうございます。 – VAdaihiep

0

ここでは、スパイダーで複数のスパイダーを実行できるようにするコードです。 scrapy.cfgと同じディレクトリ(マイscrapyのバージョンは1.3.3であり、それは動作します)で、このコードを保存します。

from scrapy.utils.project import get_project_settings 
from scrapy.crawler import CrawlerProcess 

setting = get_project_settings() 
process = CrawlerProcess(setting) 

for spider_name in process.spiders.list(): 
    print ("Running spider %s" % (spider_name)) 
    process.crawl(spider_name,query="dvh") #query dvh is custom argument used in your scrapy 

process.start() 

、その後、あなたはcronジョブを実行するには、このPythonプログラムをスケジュールすることができます。

関連する問題