运行Scrapy Spider的多个进程

时间:2016-10-13 07:13:40

标签: scrapy scrapy-spider

我有一个Scrapy项目,可以从数据库中读取100万个产品ID,然后根据网站上的ID开始抓取产品详细信息。

我的蜘蛛完全正常工作。

我想运行10个Spider实例,每个实例都分配了相同数量的产品ID。

我可以这样做,

SELECT COUNT(*) FROM product_ids然后将其除以10,然后执行

SELECT * FROM product_ids LIMIT 0, N依此类推

我有一个想法,我可以通过在LIMIT等scrapy命令中传递scrapy crawl my_spider scrape=1000来在终端中执行此操作。

但是我想在Spider中做到这一点,所以我只运行一次Spider,然后在spider中运行10个同一蜘蛛的另一个进程。

1 个答案:

答案 0 :(得分: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() 

它在同一个进程中运行多个蜘蛛而不是多个进程。