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检测远程udp端口是否打开的方法
Mar 14 Python
Python下使用Psyco模块优化运行速度
Apr 05 Python
python使用urllib2实现发送带cookie的请求
Apr 28 Python
初步解析Python下的多进程编程
Apr 28 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
Flask框架模板继承实现方法分析
Jul 31 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 Python
详细分析Python垃圾回收机制
Jul 01 Python
Python os库常用操作代码汇总
Nov 03 Python
python生成word合同的实例方法
Jan 12 Python
Python中使用ipython的详细教程
Jun 22 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排序算法的复习和总结
2012/02/15 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
static关键字的用法
2013/10/07 面试题
车间主任岗位职责
2014/03/16 职场文书
高三励志标语
2014/06/05 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL