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自动化测试实例解析
Sep 28 Python
Python实现随机选择元素功能
Sep 14 Python
简单谈谈python基本数据类型
Sep 26 Python
学习python的前途 python挣钱
Feb 27 Python
详解python的argpare和click模块小结
Mar 31 Python
python求平均数、方差、中位数的例子
Aug 22 Python
用python3读取python2的pickle数据方式
Dec 25 Python
Python求两个字符串最长公共子序列代码实例
Mar 05 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
Python如何转换字符串大小写
Jun 04 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 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代码运行时间查看类代码分享
2011/08/06 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
简单谈谈favicon
2015/06/10 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
取得传值的函数
2006/10/27 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
口头翻译求职人自荐信
2013/12/07 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
代办社保委托书范文
2014/10/06 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS