scrapy 分布式 mysql_Scrapy基于scrapy_redis实现分布式爬虫部署的示例
准备工作
1.安装scrapy_redis包,打开cmd工具,执行命令pip install scrapy_redis
2.准备好一个没有BUG,没有报错的爬虫项目
3.准备好redis主服务器还有跟程序相关的mysql数据库
前提mysql数据库要打开允许远程连接,因为mysql安装后root用户默认只允许本地连接,详情请看此文章
部署过程
1.修改爬虫项目的settings文件
在下载的scrapy_redis包中,有一个scheduler.py文件,里面有一个Scheduler类,是用来调度url,还有一个dupefilter.py文件,里面有个类是RFPDupeFilter,是用来去重,所以要在settings任意位置文件中添加上它们
还有在scrapy_redis包中,有一个pipelines文件,里面的RedisPipeline类可以把爬虫的数据写入redis,更稳定安全,所以要在settings中启动pipelines的地方启动此pipeline
最后修改redis连接配置
2.修改spider爬虫文件
首先我们要引入一个scrapy_redis.spider文件中的一个RedisSpider类,然后把spider爬虫文件原来继承的scrapy.Spider类改为引入的RedisSpider这个类
接着把原来的start_urls这句代码注释掉,加入redis_key = '自定义key值',一般以爬虫名:urls命名
测试部署是否成功
直接运行我们的项目,
打开redis客户端在redis添加key为yunqi:start_urls的列表,值为地址
添加成功后,程序直接跑了起来
查看数据是否插入
分布式用到的代码应该是同一套代码
1) 先把项目配置为分布式
2) 把项目拷贝到多台服务器中
3) 把所有爬虫项目都跑起来
4) 在主redis-cli中lpush你的网址即可
5) 效果:所有爬虫都开始运行,并且数据还都不一样
到此这篇关于Scrapy基于scrapy_redis实现分布式爬虫部署的示例的文章就介绍到这了,更多相关Scrapy redis分布式爬虫 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
scrapy 分布式 mysql_Scrapy基于scrapy_redis实现分布式爬虫部署的示例相关推荐
- python爬虫之基于scrapy_redis的分布式爬虫
基于redis的分布式爬虫 问题: (1)为什么原生的scrapy框架不可以自己实现分布式爬虫? 原因有两个: (1)因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配 ...
- scrapy_redis实现分布式爬取京东图书数据
京东分布式爬虫 # -*- coding: utf-8 -*- import jsonimport scrapyfrom JD.items import JdItem# 1. 导入分布式爬虫 from ...
- etcd 笔记(08)— 基于 etcd 实现分布式锁
1. 为什么需要分布式锁? 在分布式环境下,数据一致性问题一直是个难点.分布式与单机环境最大的不同在于它不是多线程而是多进程.由于多线程可以共享堆内存,因此可以简单地采取内存作为标记存储位置.而多进程 ...
- 基于 Redis 实现分布式锁思考
以下文章来源方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/xuan_lu/article/details/111600302 分布式锁 基于redis实 ...
- redis使用sysc超时_基于redis的分布式锁实现
随着业务越来越复杂,应用服务都会朝着分布式.集群方向部署,而分布式CAP原则告诉我们,Consistency(一致性). Availability(可用性).Partition tolerance(分 ...
- 分布式事务模型--基于消息的分布式事务
本文来说下分布式事务模型之基于消息的分布式事务 文章目录 概述 基于消息的分布式事务 基于事务消息的分布式事务 基于本地消息的分布式事务 特点剖析 本文小结 概述 事务是一组不可分组的操作集合,这些操 ...
- 基于redis实现分布式锁思考
分布式锁 基于redis实现分布式锁思考几个问题??? synchronized锁为什么不能应用于分布式锁? synchronized虽然能够解决同步问题,但是每次只有一个线程访问,并且synchro ...
- 【Zookeeper】基于Zookeeper实现分布式锁
1.概述 转载:基于Zookeeper实现分布式锁 1.1 为什么使用分布式锁 我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,我们往往采用synchronized或者Lock ...
- redis技术分享ppt_一线互联网架构师技术分享:基于redis的分布式锁实现
着业务越来越复杂,应用服务都会朝着分布式.集群方向部署,而分布式CAP原则告诉我们,Consistency(一致性). Availability(可用性).Partition tolerance(分区 ...
最新文章
- 24组8K真实路面材质贴图素材 VizPeople – Pavement Textures V1
- 关于肥胖和美国为什么那么多胖子
- .net core 程序退出事件
- 高频面试题:如何保证缓存与数据库的双写一致性?
- linux_安装jdk和mysql简单步骤记
- 史上最大源码泄露事件:iOS 关键源代码被匿名公布在 GitHub 上
- linux内核包转发过程(三)NIC帧接收分析
- NTFS格式分区大小数值表
- java equals 的区别_Java中equals和==的区别
- 中国电信联合多方加速推进OpenStack技术产业化 —— OSCAR即将发布“OpenStack技术应用场景”技术规范...
- Eclipse打开目标文件夹
- Fiddler:安卓抓包配置
- nuvoton 开发环境安装问题
- 房多多Q2营收同比下降46%:亏损同比扩大8.9倍,股价再创新低
- MEM/MBA英语基础(08)复合句-状语从句
- 论文计算机本科字数,211本科毕业论文多少字?毕业论文多少字数要求
- 不得不知的101种心理防御机制,识别并超越它们
- 小学五年级计算机课评课,小学数学五年级下册公开课《分数的意义》听课心得体会评课稿...
- ApacheCon Asia 2022 启动,7 场阿里云大数据 +AI 议题分享等你围观
- 服务器心跳信号,服务器心跳攻击
热门文章
- php7 nts,php7.0.24-nts配置步骤
- java 存储空间_Java中的存储空间类型
- linux通过spi和stm32通信,双STM32通过SPI进行通信
- 1360E. Polygon
- android 复制字符串,Cocos2dx 复制文本到剪切板(Android 和 ios)
- 1-5 线性表元素的区间删除 (20 分)
- c++判断ftp服务器文件存在性判断_BitTorrent协议与传统文件分发协议对比
- 源码安装mysql5.1.51
- myeclipse mysql连接_MyEclipse连接Mysql数据库的方法(一)
- python语言单行注释符_云计算开发学习笔记:Python3注释