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实现dict版图遍历示例
Feb 19 Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
Python中用startswith()函数判断字符串开头的教程
Apr 07 Python
详解Django中的form库的使用
Jul 18 Python
详解python3百度指数抓取实例
Dec 12 Python
python线程池threadpool使用篇
Apr 27 Python
django 解决manage.py migrate无效的问题
May 27 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
python flappy bird小游戏分步实现流程
Feb 15 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作的文本留言本的例子(六)
2006/10/09 PHP
PHP脚本数据库功能详解(上)
2006/10/09 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
小程序实现展开/收起的效果示例
2018/09/22 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
浅探express路由和中间件的实现
2019/09/30 Javascript
Python基本语法经典教程
2016/03/11 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
Python 导入文件过程图解
2019/10/15 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
Ruby如何定义一个类
2012/10/08 面试题
俄罗斯商务邀请函
2014/01/26 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
食品安全演讲稿
2014/09/01 职场文书
街道务虚会发言材料
2014/10/20 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
2016中秋节广告语
2016/01/28 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python