经过前面的介绍,相信大家已经对Python爬虫有了初步的了解,对一些常见的网站爬虫,应该也能够轻松实现。不难发现,我们在使用单一爬虫进行爬取数据时有明显缺陷——速度慢,当我们需要进行大规模数据采集时,这种速度难以满足我们的需求。此时,就需要分布式爬虫的帮助了。由于对分布式系统不做过多解释,有兴趣的朋友可以自行查阅了解,我们将重点放在分布式爬虫上,下面是几点简单介绍:

Ⅰ. 简介

一. 什么是分布式爬虫:
1. 默认情况下,我们使用scrapy框架进行爬虫时使用的是单机爬虫,就是说它只能在一台电脑上运行,因为爬虫调度器当中的队列queue去重和set集合都只能在本机上创建的,其他电脑无法访问另外一台电脑上的内存和内容。
2. 分布式爬虫实现了多台电脑使用一个共同的爬虫程序,它可以同时将爬虫任务部署到多台电脑上运行,这样可以提高爬虫速度,实现分布式爬虫。

二. 分布式爬虫的前提:
1. 要保证每一台计算机都能够正常的执行scrapy命令,能够启动爬虫,这是对计算机硬件的最低水平、计算机系统环境和网络等多方面的基本需求,不再赘述。
2. 要保证所有的爬虫程序可以访问同一个队列一个set集合。

针对第二个条件,需要以下特殊声明:
想要满足第二个条件,我们要使用scrapy_redis。想要保证多台机器共用一个queue队列和set集合,在scrapy框架中,是需要结合scrapy_redis完成的。分布式爬虫可以让所有机器上的爬虫程序,从同一个queue队列中获取request请求,并且每个机器取出request,请求的对象是不一样的,直到所有的request被请求完毕。

三. 分布式爬虫的适用范围/要求:
1. 分布式爬虫对电脑的性能有一定的要求(特别是处理器,也就是常说的cpu)。
2. 分布式爬虫对网速也有一定的要求 。

注意:电脑性能和网速如果不是很好的话,分布式爬虫效率反而不如单一爬虫。并不是任何时候都可以使用分布式爬虫,如果你需要大规模获取数据,不满足于单一爬虫的效率,而且硬件条件能够得到满足,那么就使用分布式爬虫吧。当然,大部分情况下,由于对硬件有要求,一些刚成立的小公司可能负担不起这样的成本。

四. 分布式爬虫经常和redis数据库一起使用:
redis数据有几个特点,首先它的优点是:
1. 默认使用持久化数据方式
2. 体积小,使用方便
3. 如果存储数据量比较大的话,启动速度很快
4. 数据库中的数据和内存中的数据可以相互访问
最主要的缺点是:从安全性角度来说,数据持久化可能会容易崩溃,造成数据丢失

五. 要实现分布式爬虫,首先要配置服务器主从:
配置主从的目的:
1.达到一个备份的功能,一旦master出现崩溃而数据库中还有数据的话,可以将其中的一个slave重新设置为主服务器,从而恢复redis的正常运行。
2.一个redis服务器负责读写,性能较低,通过主从来减轻一个redis的压力。

六. redis主从的配置:
redis作为缓存服务器,主要是将数据在内存中进行缓存,但是一台机器的内存和性能是有限的,当对于redis数据库的数据进行读写量较大时,那么一台redis就不能满足需求了,此时需要将redis部署到多台机器上,用以写入数据的redis,称之为master,而只负责读取数据的redis,称之为slave。
    七. redis主从的特点:
1.master只负责写入数据,slave只负责读取数据。
2.当slave创建的时候,会向master发送一个同步的命令,master接收到命令以后,将数据同步给slave。
3.master只能有一个,slave可以有多个。

Ⅱ. redis的安装

前面大概了解了一下redis的作用,现在进入实际操作,从最基本的安装做起。

1. 进入redis下载链接下载最新版本,如图所示,本文采用的是3.2.100版本。

下载链接为:https://github.com/MicrosoftArchive/redis/releases

2.  下载完成后将其解压至Python同级目录(方便管理),为了使用方便,也可以将redis路径添加进Path环境变量。

3.  完成解压后,找到配置文件redis.windows.conf,使用任意编译器打开,根据自己需要修改

首先我们要注销第56行:

接着在75行添加''protected-mode no''

最后在123行添加''daemonize yes''

4. 打开一个终端,进入redis文件夹后,输入命令redis-server redis.windows.conf开启服务端,若出现下图所示界面,则表示服务端开启成功。服务端打开后,在停用redis前切记不能关闭,否则之后的所有操作全部无法完成。

5. 打开一个新的终端,输入命令redis-cli -h 127.0.0.1 -p 6379,创建一个客户端 ,然后设置键值对,设置值 set key1 XX  获取值 get key1。

6. 如果想要在让B电脑连接到A电脑上,需要获取A电脑的IP,B电脑需要设置redis-cli -h A电脑ip,在B电脑终端输入命令get key1,就可以获取刚才A电脑上的key1值,如果出错,需要设置A电脑上的配置文件,bind127.0.0.1注释掉,dazmoize no,关系守护进程 ,protected-mode no 关闭保护模式(就是前文需要修改配置文件的三行代码)。

注:收到系统通知,后续步骤不便展示。

Python如何实现分布式爬虫相关推荐

  1. Python面试必备—分布式爬虫scrapy+redis解析

    传智播客博学谷 微信号:boxuegu- get最新最全的IT技能 免费领取各种视频资料 注意:文末送书 很多小伙伴留言,最近准备跳槽,但是面试的机会比较少,好不容易得到面试机会,由于技术点的匮乏,面 ...

  2. Python无框架分布式爬虫,爬取范例:拼多多商品详情数据,拼多多商品列表数据

    拼多多是中国领先的社交电商平台之一,是一家以"团购+折扣"为主要运营模式的电商平台.该平台上有海量的商品,对于商家和消费者来说都具有非常大的价值,因此,拼多多商品数据的采集技术非常 ...

  3. 分布式爬虫(四):大结局

      分布式爬虫之大结局篇:基于之前三篇博客配置的环境,缺一不可,若是漏了哪一步安装步骤,则可能存在运行报错问题.话不多说,抓紧时间结束这最后的分布式爬虫挣扎. 操作环境: Windows10.Pyth ...

  4. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...

    第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...

  5. 一个自定义python分布式爬虫框架。

    一个分布式爬虫框架.比scrapy简单很多,不需要各种item pipeline middwares spider settings run文件之间来回切换写代码,这只需要一个文件,开发时候可以节约很 ...

  6. 2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会

    2019独角兽企业重金招聘Python工程师标准>>> 阿里云大学在线工作坊上线,原理精讲+实操演练,让你真正掌握云计算.大数据技能. 在第一批上线的课程中,有一个Python爬虫的 ...

  7. Python分布式爬虫-elasticsearch搭建搜索引擎

    Python分布式爬虫-elasticsearch搭建搜索引擎 一.elasticsearch使用 1.elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它 ...

  8. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查...

    第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...

  9. python队列来做什么_python分布式爬虫中的消息队列是什么?

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

最新文章

  1. 未来IT的三驾马车:AI、物联网和混合云
  2. 布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想
  3. sql order by+字段,指定按照哪个字段来排序
  4. python index函数时间复杂度_初学python之以时间复杂度去理解列表常见使用方法
  5. 一张图,看懂阿里云的“飞天”史
  6. CentOS生成自签名证书配置Apache https
  7. 删除Linux下/tmp目录引起的不正常登录系统
  8. Makefile文件试错
  9. 项目实践中Linux集群的总结和思考
  10. linux多线程加解锁
  11. 【转】 Pro Android学习笔记(九一):了解Handler(5):组件生命
  12. “小程序 · 云开发”重磅上线,让小程序开发更高效!
  13. SendMessage 函数
  14. Flash MX 2004 帮助CHM 在线版
  15. hdmi 计算机 接口类型,四大常用视频接口对比,你的电脑是哪种接口?
  16. 历久而新,我的新书《第二行代码》已出版!
  17. excel 隐藏和取消隐藏
  18. Python 彻底搞懂列表推导式|初级到进阶(实例30+)
  19. 微信小程序时间标签和时间范围的联动
  20. arnold如何设置鱼眼相机_【总结】如何看待默认渲染器、arnold阿诺德渲染器、Octane渲染器、Redshift等渲染器?...

热门文章

  1. 2021年低压电工模拟考试题及低压电工复审模拟考试
  2. oracle空间查询定义,ORACLE SDO_GEOMETRY 空间数据创建查询
  3. 关于Python之quote()的使用
  4. [Java] 自己写的课程设计【游戏华容道】
  5. 北邮计算机学院盲审名单,北京邮电大学
  6. 1.ROS环境搭建与基础工作
  7. Faster RCNN代码详解(六):自定义评价函数
  8. 怎样修改图片尺寸比例?图片大小修改在线修改的方法
  9. MySQL基础部分学习笔记
  10. 土木工程专业(独立本科段)自学考试毕业设计实施方案