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实现微信公众平台自定义菜单实例
Mar 20 Python
Python中的super用法详解
May 28 Python
Python解析json文件相关知识学习
Mar 01 Python
Python数据结构之单链表详解
Sep 12 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
Python安装selenium包详细过程
Jul 23 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 Python
python asyncio 协程库的使用
Jan 21 Python
Python Matplotlib绘制动画的代码详解
May 30 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 年龄计算函数(精确到天)
2012/06/07 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
PHP微商城开源代码实例
2019/03/27 PHP
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
vue的事件绑定与方法详解
2017/08/16 Javascript
简述vue中的config配置
2018/01/23 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
大学自荐信
2013/12/12 职场文书
外语系毕业生自荐信范文
2013/12/16 职场文书
总经理秘书的岗位职责
2013/12/27 职场文书
十佳护士获奖感言
2014/02/18 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle