我们知道,现在运行Scrapy项目中的爬虫文件,需要一个一个地运行,那么是否可以将对应的爬虫文件批量运行呢?如果可以,又该怎么实现呢?在Scrapy中,如果想批量运行爬虫文件,常见的有两种方法:
- 使用CrawProcess实现
- 使用修改craw源码 + 自定义命令的方式实现
现在我们创建一个新的爬虫项目,用于实现爬虫多开技能:
scrapy startproject multi_spiders
然后,进入该爬虫项目所在目录,并在该项目中创建3个爬虫文件,如下所示:
vagrant@homestead:~/spider/multi_spiders$ scrapy genspider first_spider baidu.com
Created spider 'first_spider' using template 'basic' in module:
multi_spiders.spiders.first_spider
vagrant@homestead:~/spider/multi_spiders$ scrapy genspider second_spider baidu.com
Created spider 'second_spider' using template 'basic' in module:
multi_spiders.spiders.second_spider
vagrant@homestead:~/spider/multi_spiders$ scrapy genspider third_spider baidu.com
Created spider 'third_spider' using template 'basic' in module:
multi_spiders.spiders.third_spider
此时,我们已经在项目中创建了3个爬虫文件,有了这些转呗工作之后,我们就可以正式进入运行多个爬虫文件的功能的编写。
使用CrawProcess实现
CrawProcess为scrapy.spiders
模块下的一个工具类,要实现爬虫多开技能,我们需要先将其导入进来,并且实例化。下面新建一个Python文件multi_manager.py
,用于实现爬虫多开操作,实现多开操作的具体代码如下:
# -*- coding: UTF-8 -*-
from multi_spiders.spiders.first_spider import FirstSpiderSpider
from multi_spiders.spiders.second_spider import SecondSpiderSpider
from multi_spiders.spiders.third_spider import ThirdSpiderSpider
from scrapy.crawler import CrawlerProcess
process = CrawlerProcess(