了解更多关注微信公众号“木下学Python”吧~
1.使用修改 crawl 源码 + 自定义命令方式实现
2.创建项目:scrapy startproject mymultispd
3.进入项目文件创建多个爬虫文件:scrapy genspider -t basic myspd1 sina.com.cn
scrapy genspider -t basic myspd2 sina.com.cn
scrapy genspider -t basic myspd3 sina.com.cn
4.crawl.py 中的源 run() 方法
def run(self, args, opts):
if len(args) < 1:
raise UsageError()
elif len(args) > 1:
raise UsageError("running 'scrapy crawl' with more than one spider is no longer supported")
spname = args[0]
self.crawler_process.crawl(spname, **opts.spargs)
self.crawler_process.start()
if self.crawler_process.bootstrap_failed:
self.exitcode = 1
- self.crawler_process.crawl(spname, **opts.spargs) 实现爬虫文件的运行,spname 指爬虫名
- 要获取所有爬虫文件,通过 self.crawler_process.spider_loader.list() 实现
5.建立一个文件夹存放要写的源码文件,位置放在 spider 同级目录下:
- 创建文件夹:mkdir mycmd
- 进入该文件夹创建一个Python文件:echo #>mycrawl.py
- 把 crawl.py 源码复制到这里面
- 在创建一个初始化文件:echo #>__init__.py
6.修改 run() 方法后的代码
def run(self, args, opts):
#获取爬虫列表
spd_loader_list = self.crawler_process.spider_loader.list()
#遍历各爬虫
for spname in spd_loader_list or args:
self.crawler_process.crawl(spname,**opts.spargs)
print('此时启动的爬虫为:' + spname)
self.crawler_process.start()
7.需要添加一个自定义命令在项目配置文件(settings.py),格式为‘COMMANDS_MODULE = '项目核心目录.自定义命令源码目 录'
COMMANDS_MODULE = 'mymultispd.mycmd'
8.随后进入该项目所在目录,输入 scrapy -h 可以看见自定义的命令 mycrawl
9.运行:scrapy mycrawl --nolog