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


相关推荐

  • tcpip协议族有哪些

    tcpip协议族有哪些tcpip协议族有哪些有五层应用层运输层网络层数据链路层物理层

    2022年6月22日
    24
  • 二次与三次B样条曲线c++实现

    二次与三次B样条曲线c++实现B样条曲线构建一条平滑曲线,接近而不通过控制点(首尾点除外)。如图B样条曲线从Bezier曲线演变而来,了解B样条曲线首先得了解Bezier曲线。对于平面上的三个点P0,P1,P2,其坐标分别是(x0,y0)、(x1,y1)、(x2,y2)。二次Bezier曲线用一…

    2022年6月18日
    35
  • css漂浮广告代码_html浮动窗口怎么做

    css漂浮广告代码_html浮动窗口怎么做1.html部分复制代码代码如下:blog_floatdiv.html我是浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div浮动的div…

    2025年12月5日
    5
  • Java中 List 和 JSON字符串之间的相互转换

    Java中 List 和 JSON字符串之间的相互转换List转JSON字符串Listlist=newArrayList();Map<String,String>map=newHashMap<>();map.put("name","szy");map.put("num",2);list.add(map);StringinventoryResultStr=JSON.t…

    2022年10月17日
    1
  • IBM中枪后,下一个是谁?

    IBM中枪后,下一个是谁?

    2022年1月28日
    77
  • 常用的安全渗透测试工具(渗透测试工具)

    应用程序安全性并不新鲜,但它在需求、复杂性和深度方面正迅速增长。随着网络犯罪自疫情爆发以来增长了近600%,越来越多的SaaS企业开始争相保护他们的应用程序。即使那些运行最新端点保护的系统也面临重大漏洞。然而随之而来的一个问题是:即便采取了这些安全防护措施,能保护自己不会受到网络攻击吗?答案在于应用程序安全测试解决方案,该解决方案可以主动测试您的代码是否存在错误、关键漏洞和需要全面改进的领域。接下来是常见几种测试。 渗透测试 部署自动化工具,如SAST、DAST、RAST和IAST

    2022年4月16日
    62

发表回复

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

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