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 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
Python如何抓取天猫商品详细信息及交易记录
Feb 23 Python
python简单操作excle的方法
Sep 12 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
Python接口测试get请求过程详解
Feb 28 Python
python不同系统中打开方法
Jun 23 Python
运行python提示no module named sklearn的解决方法
Nov 29 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 Python
python识别围棋定位棋盘位置
Jul 26 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
小小聊天室Python代码实现
2016/08/17 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
python 标准差计算的实现(std)
2019/07/29 Python
python常用数据重复项处理方法
2019/11/22 Python
python中count函数简单的实例讲解
2020/02/06 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
职高毕业生自我鉴定
2013/10/21 职场文书
银行服务感言
2014/03/01 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
聘任书模板
2014/03/29 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
小学优秀学生评语
2014/12/29 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server