Scrapy 运行多个进程的刮擦蜘蛛
我有一个Scrapy项目,它从数据库中读取100万个产品ID,然后开始根据网站上的ID删除产品详细信息 我的蜘蛛正在全力工作 我想运行10个Spider实例,每个实例都分配了相同数量的产品ID 我可以这样做Scrapy 运行多个进程的刮擦蜘蛛,scrapy,scrapy-spider,Scrapy,Scrapy Spider,我有一个Scrapy项目,它从数据库中读取100万个产品ID,然后开始根据网站上的ID删除产品详细信息 我的蜘蛛正在全力工作 我想运行10个Spider实例,每个实例都分配了相同数量的产品ID 我可以这样做 从产品标识中选择COUNT(*),然后将其除以10,然后执行 从产品ID限制0、N中选择*等 我有一个想法,我可以在终端中通过在scrapy命令中传递LIMIT,比如scrapy crawl my_spider scrape=1000等等 但我想在Spider中执行此操作,所以我只运行了一次
从产品标识中选择COUNT(*),然后将其除以10,然后执行
从产品ID限制0、N中选择*等
我有一个想法,我可以在终端中通过在scrapy命令中传递LIMIT
,比如scrapy crawl my_spider scrape=1000
等等
但我想在Spider中执行此操作,所以我只运行了一次Spider,然后它在Spider中运行了10个相同Spider的进程。一种方法是使用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()
它在同一进程中运行多个spider,而不是多个进程。在我看来,这种逻辑应该在scrapy spider之外。通常的做法是简单地将bash脚本写入unixsplit
a包含URL的文件,然后逐个迭代这些文件,每次启动一个scrapy spider,其参数为该文件:scrapy crawl-a file=xab
我擅长PHP,因此我可以为此编写一个PHP脚本……)好建议