视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
分布式爬虫架构
2025-09-26 21:54:52 责编:小OO
文档


设计爬虫架构

爬虫架构满足一下功能

(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)定时发送,爬虫运行的情况和爬取数据总量下载本文

显示全文
专题