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 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
python+pygame简单画板实现代码实例
Dec 13 Python
python基础教程项目四之新闻聚合
Apr 02 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
python statsmodel的使用
Dec 21 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
正则表达式语法
2006/10/09 Javascript
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
2013/04/23 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
Node.js实现数据推送
2016/04/14 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
Python实现从订阅源下载图片的方法
2015/03/11 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
全神贯注教学反思
2014/02/03 职场文书
先进典型发言材料
2014/12/30 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
公司档案管理制度
2015/08/05 职场文书
初中团支书竞选稿
2015/11/21 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python