我有一个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个同一蜘蛛的另一个进程。
答案 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()
它在同一个进程中运行多个蜘蛛而不是多个进程。