Python如何实现分布式爬虫

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

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

Ⅰ. 简介

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

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

    三. 分布式爬虫的适用范围/要求:
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

Python如何实现分布式爬虫

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

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

Python如何实现分布式爬虫

首先我们要注销第56行:

Python如何实现分布式爬虫

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

Python如何实现分布式爬虫

最后在123行添加”daemonize yes”

Python如何实现分布式爬虫

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

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

Python如何实现分布式爬虫

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 关闭保护模式(就是前文需要修改配置文件的三行代码)。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198630.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:48
下一篇 2026年3月26日 下午2:49


相关推荐

  • G1垃圾收集器详解

    G1垃圾收集器详解G1垃圾收集器GC收集器的三个考量指标:占用的内存(Capacity)延迟(Latency)吞吐量(Throughput)随着硬件的成本越来越低,机器的内存也越来越大,GC收集器占用的内存基本上可以容忍。而吞吐量可以通过集群(增加机器)来解决。随着JVM中内存的增大,STW的时间成为JVM急迫解决的问题,如果还是按照传统的分代模型,使用传统的垃圾收集器,那么STW的时间将会越来越长。在传统的垃圾收集器中,STW的时间是无法预测的,有没有一种办法,能够首先定义一个停顿时间,然后反向推算收集内

    2022年5月1日
    51
  • 2021 idea 激活码_通用破解码

    2021 idea 激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    102
  • 【原创】异步FIFO设计原理详解 (含RTL代码和Testbench代码)

    【原创】异步FIFO设计原理详解 (含RTL代码和Testbench代码)FIFO在硬件上是一种地址依次自增的SingleDulRAM,按读数据和写数据工作的时钟域是否相同分为同步FIFO和异步FIFO,其中同步FIFO是指读时钟和写时钟为同步时钟,常用于数据缓存和数据位宽转换;异步FIFO通常情况下是指读时钟和写时钟频率有差异,即由两个异步时钟驱动的FIFO,由于读写操作是独立的,故常用于多比特数据跨时钟域处理。本文仅讨论异步FIFO的设计。因为FIFO的硬件本质是一块SingleDulRAM,无论它的内部结构和原理如何复杂,最核心的…

    2022年8月13日
    8
  • GLM-5深夜官宣:Pony Alpha身份揭晓,编程能力逼近Claude Opus

    GLM-5深夜官宣:Pony Alpha身份揭晓,编程能力逼近Claude Opus

    2026年3月15日
    5
  • Membership 二

    Membership 二MembershipPr 提供了 Membership 数据源和服务之间的所有接口 在 Asp net2 0 中提供了两个 Provider SqlMembershi 和 ActiveDirect 从命名中我们也可以看出 SqlMembershi 是把 sqlserver 和 sqlserverexp 数据库作为数

    2026年3月17日
    3
  • 手眼标定(一):Opencv4实现手眼标定及手眼系统测试[通俗易懂]

    手眼标定(一):Opencv4实现手眼标定及手眼系统测试[通俗易懂]Opencv4实现手眼标定及手眼系统测试(一)前言程序环境原理如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入前言由于项目需要,要在win10环境下实现“眼在…

    2022年4月29日
    418

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号