2016-10-13 17 views
1

私はデータベースから1百万の製品IDを読み込み、WebサイトのIDに基づいて製品の詳細をスクラップするScrapyプロジェクトを持っています。Scrapy Spiderの複数のプロセスを実行する

My Spiderは完全に機能しています。

スパイダーのインスタンスを10個ずつ実行し、それぞれに同じ数のプロダクトIDを割り当てたいとします。

私は、のような

SELECT COUNT(*) FROM product_idsをそれを行うと、私は私はLIMITを渡すことによって、ターミナルでそれを行うことができますアイデアを持って10で割り、その後

SELECT * FROM product_ids LIMIT 0, Nなどを行うことができます例えばscrapy crawl my_spider scrape=1000のような治療コマンド。

しかし私はスパイダーでそれをやりたがっているので、スパイダーを1回だけ実行してから、スパイダー内で同じスパイダーの別のプロセスを10回実行します。

+0

私の意見では、この論理は、蜘蛛の蜘蛛の外に留まるべきです。これを行う一般的な方法は、urlsを含むファイルをunix 'split'するためのbashスクリプトを作成し、それらのファイルを1つずつ繰り返し、それぞれのスタートアップに対してそのファイルである引数を持つscrapyスパイダーを作成することです:' scrapy crawl -a file = xab' – Granitosaurus

+0

私はPHPが上手だから、そのためにPHPスクリプトを書くかもしれません。:)良い答え – Umair

答えて

2

これを行う方法の1つは、CrawlerProcessヘルパークラスまたはCrawlerRunnerクラスです。

import scrapy 
from scrapy.crawler import CrawlerProcess 

class Spider1(scrapy.Spider): 
    # Your first spider definition 

process = CrawlerProcess() 
process.crawl(Spider1) 
process.crawl(Spider1) 
process.start() 

複数のプロセスではなく、同じプロセス内で複数のスパイダーを実行しています。

関連する問題