Scrapy基于scrapy_redis实现分布式爬虫部署的示例


Posted in Python onSeptember 29, 2020

准备工作

1.安装scrapy_redis包,打开cmd工具,执行命令pip install scrapy_redis

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

2.准备好一个没有BUG,没有报错的爬虫项目

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

3.准备好redis主服务器还有跟程序相关的mysql数据库

前提mysql数据库要打开允许远程连接,因为mysql安装后root用户默认只允许本地连接,详情请看此文章

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

部署过程

1.修改爬虫项目的settings文件

在下载的scrapy_redis包中,有一个scheduler.py文件,里面有一个Scheduler类,是用来调度url,还有一个dupefilter.py文件,里面有个类是RFPDupeFilter,是用来去重,所以要在settings任意位置文件中添加上它们

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

还有在scrapy_redis包中,有一个pipelines文件,里面的RedisPipeline类可以把爬虫的数据写入redis,更稳定安全,所以要在settings中启动pipelines的地方启动此pipeline

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

最后修改redis连接配置

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

2.修改spider爬虫文件

首先我们要引入一个scrapy_redis.spider文件中的一个RedisSpider类,然后把spider爬虫文件原来继承的scrapy.Spider类改为引入的RedisSpider这个类

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

接着把原来的start_urls这句代码注释掉,加入redis_key = '自定义key值',一般以爬虫名:urls命名

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

测试部署是否成功

直接运行我们的项目,

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

打开redis客户端在redis添加key为yunqi:start_urls的列表,值为地址

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

添加成功后,程序直接跑了起来

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

查看数据是否插入

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

Scrapy基于scrapy_redis实现分布式爬虫部署的示例

分布式用到的代码应该是同一套代码
1) 先把项目配置为分布式
2) 把项目拷贝到多台服务器中
3) 把所有爬虫项目都跑起来
4) 在主redis-cli中lpush你的网址即可
5) 效果:所有爬虫都开始运行,并且数据还都不一样

到此这篇关于Scrapy基于scrapy_redis实现分布式爬虫部署的示例的文章就介绍到这了,更多相关Scrapy redis分布式爬虫 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 实现网页自动截图的示例讲解
May 17 Python
python生成带有表格的图片实例
Feb 03 Python
python安装pil库方法及代码
Jun 25 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
django使用JWT保存用户登录信息
Apr 22 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
浅谈python锁与死锁问题
Aug 14 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
Selenium浏览器自动化如何上传文件
Apr 06 Python
浅析python 字典嵌套
Sep 29 #Python
详解基于Scrapy的IP代理池搭建
Sep 29 #Python
Python 创建守护进程的示例
Sep 29 #Python
Python 解析xml文件的示例
Sep 29 #Python
Python 字典一个键对应多个值的方法
Sep 29 #Python
python 获取字典特定值对应的键的实现
Sep 29 #Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 #Python
You might like
php $_SERVER当前完整url的写法
2009/11/12 PHP
深入PHP FTP类的详解
2013/06/13 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
python自定义解析简单xml格式文件的方法
2015/05/11 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
Python中表示字符串的三种方法
2017/09/06 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
使用python实现kNN分类算法
2019/10/16 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
HTML5进度条特效
2014/12/18 HTML / CSS
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
孩子教育的心得体会
2014/09/01 职场文书
大学生学习计划书
2014/09/15 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js