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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
python迭代dict的key和value的方法
Jul 06 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 Python
python字典的值可以修改吗
Jun 29 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 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
PHP临时文件的安全性分析
2014/07/04 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
初中作文评语
2014/12/25 职场文书
招标保密承诺书
2015/01/20 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers