前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式爬虫架构_分布式爬虫工具有哪些

分布式爬虫架构_分布式爬虫工具有哪些

作者头像
全栈程序员站长
发布2022-11-17 17:54:59
8660
发布2022-11-17 17:54:59
举报

目录

分布式爬虫框架

分布式爬虫框架分为两种:控制模式(左)和自由模式(右):

fig1
fig1

控制模式中的控制节点是系统实现中的瓶颈,自由模式则面临爬行节点之间的通信处理问题。因此,在实际工程中,我们通常使用混合模式:

  • 各个爬行节点有各自的功能(爬取的对象不同),它们都注册到一个服务节点上,服务节点能分辨各个爬行节点的分工,用户的请求存放在队列中,处理不同请求的程序从队列中取出请求,然后询问服务节点,由服务节点分配爬行节点给请求的处理程序。

下面介绍分布式爬虫框架的几个重要模块;

URL Manager:爬虫系统的核心。负责URL的重要性排序,分发,调度,任务分配。单个的爬虫完成一批URL的爬取任务之后,会找 URL Manager要一批新的URL。一般来说,一个爬取任务中包含几千到一万个URL,这些URL最好是来自不同的host,这样,不会给一个 host在很短一段时间内造成高峰值。

Content Acceptor:负责收集来自爬虫爬到的页面或是其它内容。爬虫一般将爬取的一批页面,比如,一百个页面,压缩打包成一个文件,发送给Content Acceptor。Content Acceptor收到后,解压,存储到分布式文件系统或是分布式数据库,或是直接交给 Content Parser(比如基于BS4写的脚本)去分析。

Proxy Manager:负责管理系统用到的所有Proxy,说白了,负责管理可以用来爬取的IP。爬虫询问Proxy Manager,得到一批 Proxy IP,然后每次访问的时候,会采用不同的IP。如果遇到IP被屏蔽,即时反馈给Proxy Manager,Proxy Manager会根据哪个host屏蔽了哪个IP做实时的智能的调度。

分布式爬虫其实和单机爬虫是一样的,只不过分布式爬虫把工作分配到不同的机器上执行,scrapy是用于单机爬虫的框架。

消息队列

分布式爬虫中节点的通信是一个重要问题,所以需要消息队列。

消息队列:消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

消息队列封装了任意节点之间的通信路径。节点只需把消息发送到消息队列就做下一步工作,而不是关心是否成功发送到某个目标节点。

通过消息队列,应用程序可独立地执行–它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。通过消息队列,应用程序可独立地执行。

Redis和Scrapy-Redis

Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Key-Value的形式适合构建消息队列。

scrapy-redis是为了更方便地实现scrapy分布式爬取,而提供了一些以redis为基础的组件。

安装方式:

代码语言:javascript
复制
pip install scrapy-redis

Jetbrains全家桶1年46,售后保障稳定

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 分布式爬虫框架
  • 消息队列
  • Redis和Scrapy-Redis
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档