分布式爬虫架构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计爬虫架构
爬虫架构满足一下功能
(1) 分布式:爬虫应该能够在多台机器上分布执行。
(2) 可伸缩性:爬虫结构应该能够通过增加额外的机器和带宽来提高抓取速度。
(3) 性能和有效性:爬虫系统必须有效地使用各种系统资源,例如,处理器、存储空间和网络带宽。
(4) 可扩展性:为了能够支持新的数据格式和新的抓取协议,爬虫架构应该设计成模块化的形式。
这里最主要的是爬虫和存储库。其中的爬虫部分阶段性地抓取互联网上的内容。存储库存储爬虫下载下来的网页,是分布式的和可扩展的存储系统。在往存储库中加载新的内容时仍然可以读取存储库。
整个爬虫系统可以由一台抓取机器或多个爬虫节点组成。
加载复杂的网页可以选择采用WebKit模拟浏览器处理js渲染页面获取
多机并行抓取的分布式系统节点之间的通信和调度,在一个爬虫节点上实现并行抓取,可以考虑多线程同步I/O或者单线程异步I/O。多线程爬虫需要考虑线程之间的同步问题。对单线程并行抓取来说,异步I/O是很重要的基本功能。
解析流程
(1)通过基于正则,Xpath.Csspath等规则,获取页面指定位置的html或文本数据
(2)按照数据格式需求,判断必要值是否存在,并根据类型判断数据正确
(3)通过验证的数据进入到数据入队的缓存队列等待存入数据仓库
(4)如果数据验证不通过,则将异常的url返回到待抓取URL集合中重新抓取
关键节点数据说明
(1)Web配置界面:可在界面增加爬取的种子入口,入库规则,URL过滤规则
(2)控制节点:负责将URl集合中的待爬地址分发到多个工作节点以便并发的执行爬取工作
(3)工作节点:根据待爬的URL信息和对应的种子规则获取页面并解析出数据,并根据抓取的页面获取相关联的需要爬取的URL信息,加入到URL集合中等待爬取.
(4)解析页面:根据种子提供的解析规则抽取,并验证数据的入库合法性,通过则存入入库缓冲队列中,如果发现有异常,则返回当前URL到URL集合中重新爬取
URL集合
Url集合中的数据项,除了抓取的url本身外,额外带有流程中各环节处理结果的数据信息,如:解析异常,会增加url项中的解析异常次数,以便在后面的逻辑中控制重试次数(还有更新次数,最近成功更新时间....)
节点配置
根据系统的规模和数据抓取量的大小,在数据存储DB这块,可以根据实际情况采用mongo,hbase或其它的数据库,以达到系统存储的可伸缩性
URL扭转的消息队列也可以根据系统规模,如1亿条数据缓存采用ssdb,如果需要性能更好可以采用kafka分布式的消息队列,以便可以方便的扩展系统运行规模.
爬虫平台监控需要实现功能
(1)爬虫运行状态监控
a)爬虫定时发送心跳包,监控平台根据心跳包,监控爬虫的运行状态
(2)爬虫采集量监控
a)对爬虫爬取数据的总量的统计
(3)爬虫采集速度监控/秒/分/时根据规模需求而定
a)/秒/分/时根据规模需求而定
(4)定时邮件发送运行状态和统计信息
a)定时发送,爬虫运行的情况和爬取数据总量