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查看FTP是否能连接成功的方法
Jul 30 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
python pygame实现2048游戏
Nov 20 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
Python 转换文本编码实现解析
Aug 27 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
python3 pathlib库Path类方法总结
Dec 26 Python
python基于tkinter实现gif录屏功能
May 19 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 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中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php的dl函数用法实例
2014/11/06 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
dojo 之基础篇
2007/03/24 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
javascript几个易错点记录
2014/11/26 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
vue将data恢复到初始状态 && 重新渲染组件实例
2020/09/04 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python内建模块struct实例详解
2018/02/02 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
2014年道德讲堂实施方案
2014/03/05 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android