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 相关文章推荐
简单的Python2.7编程初学经验总结
Apr 01 Python
python验证码识别的实例详解
Sep 09 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
python使用正则来处理各种匹配问题
Dec 22 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
Python 如何反方向迭代一个序列
Jul 28 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生成HTML静态页面实例代码
2008/08/31 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
js 数组操作代码集锦
2009/04/28 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
Node.js的特点详解
2017/02/03 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
python执行get提交的方法
2015/04/29 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
python里运用私有属性和方法总结
2019/07/08 Python
用python实现名片管理系统
2020/06/18 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
小学教师听课制度
2014/02/01 职场文书
运动会的口号
2014/06/09 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
解决xampp安装后Apache无法启动
2022/03/21 Servers