Scrapy爬虫文件批量运行的实现


Posted in Python onSeptember 30, 2020

Scrapy批量运行爬虫文件的两种方法:

1、使用CrawProcess实现

https://doc.scrapy.org/en/latest/topics/practices.html

2、修改craw源码+自定义命令的方式实现

(1)我们打开scrapy.commands.crawl.py 文件可以看到:

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()

这是crawl.py 文件中的run() 方法,在此可以指定运行哪个爬虫,要运行所有的爬虫,则需要更改这个方法。

run() 方法中通过crawler_process.crawl(spname, **opts.spargs) 实现了爬虫文件的运行,spname代表爬虫名。要运行多个爬虫文件,首先要获取所有的爬虫文件,可以通过crawler_process.spider_loader.list() 实现。

(2)实现过程:

a、在spider目录的同级目录下创建存放源代码的文件夹mycmd,并在该目录下创建文件mycrawl.py;

b、将crawl.py 中的代码复制到mycrawl.py 文件中,然后进行修改:

#修改后的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()

同时可以修改:

def short_desc(self):
    return "Run all spider"

c、在mycmd文件夹下添加一个初始化文件__init__.py,在项目配置文件(setting.py)中添加格式为“COMMANDS_MODULES='项目核心目录.自定义命令源码目录'”的配置;

例如:COMMANDS_MODULE = 'firstpjt.mycmd'

随后通过命令“scrapy -h”,可以查看到我们添加的命令mycrawl

这样,我们就可以同时启动多个爬虫文件了,使用命令:

scrapy mycrawl --nolog

Scrapy爬虫文件批量运行的实现

到此这篇关于Scrapy爬虫文件批量运行的实现的文章就介绍到这了,更多相关Scrapy 批量运行内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
Python线程threading模块用法详解
Feb 26 Python
关于python中的xpath解析定位
Mar 06 Python
Django choices下拉列表绑定实例
Mar 13 Python
Python更换pip源方法过程解析
May 19 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
Python读写锁实现实现代码解析
Nov 28 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 #Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 #Python
python pip如何手动安装二进制包
Sep 30 #Python
python Matplotlib数据可视化(1):简单入门
Sep 30 #Python
详解Python中的编码问题(encoding与decode、str与bytes)
Sep 30 #Python
python 生成器需注意的小问题
Sep 29 #Python
python 两种方法删除空文件夹
Sep 29 #Python
You might like
php 全局变量范围分析
2009/08/07 PHP
PHP 面向对象详解
2012/09/13 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
php生成QRcode实例
2014/09/22 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
python进行TCP端口扫描的实现
2018/12/21 Python
Python中Numpy mat的使用详解
2019/05/24 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
中班中秋节活动反思
2014/02/18 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
通知格式
2015/04/27 职场文书
创业计划书之宠物店
2019/09/19 职场文书
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
排查Tomcat进程假死的问题
2022/05/06 Servers