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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python中encode和decode的区别_python isalpha

    python中encode和decode的区别_python isalpha在python中,我们通常使用的是unicode编码,但是日常文本使用各类编码为utf-8,编码的类型不一样,就容易造成乱码。为了避免读写操错误,我们需要进行转码则需要decode(解码)和encode(编码)方法。1、decode的作用是将其他编码的字符串转换成unicode编码将bytes类型转换为str类型(b.decode())2、encode的作用是将unicode编码转换成…

    2022年10月6日
    6
  • ant 编译java(java是干啥的)

    1.什么是antant是构建工具2.什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3.ant的好处跨平台–因为ant是使用java实现的,所以它跨平台使用简单–与ant的兄弟make比起来语法清晰–同样是和make相比功能强大–ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。当你自己开发…

    2022年4月11日
    52
  • 3极管的原理_二极管讲解

    3极管的原理_二极管讲解我们把晶体管比作两个二极管时候,是指基极-射极二极管和基极-集电极二极管。NPN型二极管与PNP型二极管对三极管放大作用的理解,切记一点:能量不会无缘无故的产生,所以,三极管一定不会产生能量。但三极管厉害的地方在于:它可以通过小电流控制大电流。放大的原理就在于:通过小的交流输入,控制大的静态直流。假设三极管是个大坝,这个大坝奇怪的地方是,有两个阀门,一个大阀门,一个小阀门。小阀门可以用…

    2022年10月21日
    5
  • AVAudioPlayer播放在线音频文件「建议收藏」

    AVAudioPlayer播放在线音频文件「建议收藏」AVAudioPlayer播放在线音频文件一:原里:AVAudioPlayer是不支持播放在线音频的,但是AVAudioPlayer有一个initWithData的方法;我们可以把在线音频转换为NSdata;然后播放二:如代码:NSData*soundData=[sharedAppSettingsControllergetSoundUrl:defau…

    2022年9月22日
    4
  • 控制误差_自动控制原理校正

    控制误差_自动控制原理校正计算机实时控制加工误差的时滞问题.pdf第18卷薯4月J.Hu中azho理ngUU工nniv杰·ofSS学cci.·&TechhVAOpIr.i18IN19o9.021990档计算机实时控制加工误差的时滞问题薯宾鸿赞(机械工程一系)提要本文从计算机控制的原理分析八手…

    2022年10月1日
    3
  • iview中Modal弹窗做form表单验证相关问题[通俗易懂]

    iview中Modal弹窗做form表单验证相关问题[通俗易懂]iview中Modal弹窗做form表单验证相关问题

    2022年4月22日
    42

发表回复

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

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