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 相关文章推荐
Python程序设计入门(5)类的使用简介
Jun 16 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
Python Numpy库常见用法入门教程
Jan 16 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
如何使用Python调整图像大小
Sep 26 Python
详解Python如何批量采集京东商品数据流程
Jan 22 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
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
Python 类的继承实例详解
2017/03/25 Python
机器学习python实战之决策树
2017/11/01 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
会计岗位职责
2013/11/08 职场文书
公司营业员的自我评价
2014/03/04 职场文书
建设工地安全标语
2014/06/07 职场文书
美术专业自荐信
2014/07/07 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
2016年党建工作简报
2015/11/26 职场文书
学校团代会开幕词
2016/03/04 职场文书
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python