Python之分布式爬虫的实现步骤

Python之分布式爬虫的实现步骤什么是分布式爬虫 默认情况下 scrapy 爬虫是单机爬虫 只能在一台电脑上运行 因为爬虫调度器当中的队列 queue 去重和 set 集合都是在本机上创建的 其他电脑无法访问另一台电脑上的内存中的内容 分布式爬虫是一个用共同的爬虫程序 同时部署到多台电脑上运行 这样可以提高爬虫速度 实现分布式爬虫 今天我就来给大家讲一下使用 scrapy redis 实现分布式爬虫第一步 创建一个 scrapy

什么是分布式爬虫?

默认情况下,scrapy爬虫是单机爬虫,只能在一台电脑上运行,因为爬虫调度器当中的队列queue去重和set集合都是在本机上创建的,其他电脑无法访问另一台电脑上的内存中的内容。分布式爬虫是一个用共同的爬虫程序,同时部署到多台电脑上运行,这样可以提高爬虫速度,实现分布式爬虫。

今天我就来给大家讲一下使用scrapy_redis实现分布式爬虫

第一步:

创建一个scrapy爬虫项目,完善代码爬出你要爬取的数据,至于如何创建不知道的小伙伴请看我前面的关于scrapy框架的使用的博客

第二步:

更改scrapy爬虫项目中的一些内容

1.引入scrapy_redis,下面的代码使用一个就可以,RedisCrawlSpider和RedisSpider运行步骤相同,

from scrapy_redis.spiders import RedisCrawlSpider # from scrapy_redis.spiders import RedisSpider

 将继承换为RedisCrawlSpider或RedisSpider

Python之分布式爬虫的实现步骤

Python之分布式爬虫的实现步骤

2.注释掉start_urls,添加一个redis_key=’类名:start_urls’,当然这里的类名可以随便写,不过规范的写法是你的”爬虫类名:+start_urls”,这里字符串中类名不分大小写

redis_key='类名:start_urls'

3.setting文件中添加下面几句代码

# 使用scrapy_redis里的去重组件,不使用scrapy默认的去重方式 DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter' # 使用scrapy_redis里的调度器组件,不使用默认的调度器 # scheduler调度器 SCHEDULER = 'scrapy_redis.scheduler.Scheduler' # 允许暂停,redis请求记录不丢失 SCHEDULER_PERSIST = True # # 默认的scrapy_redis请求队列形式(按优先级) # # priority优先权 # SCHEDULER_QUEUE_CLASS ='scrapy_redis.queue.SpiderPriorityQueue' # 连接服务器端的redis数据库 REDIS_URL = 'redis://root:@192.168.52.176:6379'

REDIS_URL = ‘redis://root:@192.168.52.176:6379’  @后面写要连接到的服务器端的IP,6379是默认的端口号

4.在settings文件中解注释ITEM_PIPELINES 并将红框中的代码添加进去,使数据可以存入redis数据库中,

Python之分布式爬虫的实现步骤

第三步:

1.服务端修改redis.windows.conf文件,在如图所示的位置添加: bind 服务端IP。

Python之分布式爬虫的实现步骤

2.将你的代码发给另一台主机并打开

3.开启服务端,不知道如何开启的小伙伴可以看一下我的上篇博客

4.两台主机同时在控制台输入 scrapy  crawl   爬虫名,运行爬虫程序,因为没有start_urls所以会等待传入开始网址

Python之分布式爬虫的实现步骤

5.开启服务端的主机另打开一个命令提示符,连接本地服务器,输入lpush + 第二步中的redis_key的值+ 开始网址

例:

lpush 类名:start_urls http://blog.jobbole.com/all-posts/

传入开始网址之后爬虫程序会接收到 ,然后开始爬虫

Python之分布式爬虫的实现步骤

注意:客户端的小伙伴只需要将服务端的代码文件复制过来,打开运行就行了,不需要做其他操作

 

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

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

(0)
上一篇 2025年11月14日 上午9:01
下一篇 2025年11月14日 上午9:22


相关推荐

  • Linux stat函数_linux C编程视频

    Linux stat函数_linux C编程视频linuxC函数之stat函数1.函数功能:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中2.函数原型1)函数头文件#include#include2)函数intstat(constchar*file_name,structstat*buf)3)返回返回值:     执行成功则返回0,失败返回-1,错误代码存于errno错误代码:ENOENT  

    2022年8月21日
    13
  • pycharm创建python虚拟环境_pycharm 虚拟环境

    pycharm创建python虚拟环境_pycharm 虚拟环境点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤身体是革命的本钱,身体健康最重要!/1前言/  上次小编给大家介绍了P…

    2022年8月26日
    7
  • 安捷伦示波器连接电脑没反应_安捷伦示波器升级

    安捷伦示波器连接电脑没反应_安捷伦示波器升级调试或者测试电路的过程中,示波器是比不可少的东西,且常需要保存示波器的波形,可以通过一条网线把示波器与电脑连接起来,这样就可以在电脑上方便的保存波形图,怎么实现示波器和电脑连接,我们以安捷伦示波器DSO7052B为例,其他示波器类似。1.首先通过一条网线连接示波器和电脑,在电脑上找到:网络和共享中心->以太网状态->以太网属性->TCP/IPv4协议,点击属性2…

    2022年10月12日
    4
  • conda创建虚拟环境怎么删除(anaconda离线创建虚拟环境)

    在Anaconda中conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。所以对虚拟环境进行创建、删除等操作需要使用conda命令。conda本地环境常用操作#获取版本号conda–version或conda-V#检查更新当前condacondaupdateconda#查看当前存在哪些虚拟环境condaenvlist或con…

    2022年4月16日
    79
  • 基于ssm酒店管理系统的毕业设计_酒店管理系统

    基于ssm酒店管理系统的毕业设计_酒店管理系统开发工具(eclipse/idea):eclipse4.5/4.8或者idea2018,jdk1.8数据库:mysql功能模块:登录界面可以选择普通账号登录,酒店管理员登录和系统管理员登录。普通账号注册功能:注册时需填写用户名、密码、姓名、性别、邮箱等个人信息登录功能:登录已经注册过的账号,没注册的无法登录忘记密码功能:登录时忘记密码可通过填写姓名,邮箱查询密码。预订酒店:可以选择预订众多酒店其中的一个酒店的一个房间,可以选择日期住宿管理:可以看到自己是否预订成功,预订成功则有

    2026年3月7日
    2
  • elastic search数据库集群部署「建议收藏」

    elastic search数据库集群部署「建议收藏」ES数据库安装elasticasearchelasticsearch的概念:是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎ApacheLucene基础上的搜索引擎,使用Java语言编写。1、elasticsearch和MongoDB/redis/memcache一样,是非关系性数据库是一个接近实时的搜索平台,从所索引这个文档到能够被搜索到只有一个轻微的延迟,企业应用定位:采用restfullapi标准的可扩展和高可用的实时数据分析

    2022年6月9日
    45

发表回复

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

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