Scrapy 运行爬虫文件批量

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

猜你喜欢

转载自blog.csdn.net/zjkpy_5/article/details/84500318