1、引言网络
Heritrix3.X与1.X版本变化比较大,基于此带来的Extractor定向扩展方法也受到影响,自定义扩展方面由于接口的变化受阻,从而萌生了通用网络信息采集器设计的想法。一直没有一个好的网络信息采集器,必须可以适应下载对象的多样性和下载内容的复杂性。好比须要同时下载100多家主流媒体的新闻信息,并解析入库等。本文围绕通用网络信息采集器的设计展开。架构
2、需求分析工具
一个好的网络爬虫必须知足通用性、多任务、定向性和可扩展性。架构设计
通用性是指能够知足不一样格式下载对象的下载,如HTML、JS、PDF等等;多任务是指同时能够执行多个下载任务,即不一样的网络站点;定向性是指能够根据本身的业务需求定向下载,即只下载本身关注的网页,其余无关页面自动过滤掉。比较好的是开源社区有不少可用的资源,比较很差的是能同时知足以上需求的软件很是少,好在Heritrix3.X就是可以知足的之一,不过须要本身编写代码,扩展Extrator,实现其定向下载。设计
3、架构设计对象
如下部分是期待中网络信息采集器的逻辑架构。以下图所示:blog
每个目标任务表明一个下载渠道,好比sina、sohu等,下载规则负责URL过滤,只下载知足规则的内容,好比新闻;解析规则负责已经下载下来的内容的过滤,只选择我想要的东西,好比新闻标题、内容、评论等;元数据规则定义数据入库规则,任务与元数据规则关联实现自动入库。接口
4、成果展示资源
博客园躺着中枪了,以我我的的技术博客做为下载目标,如下部分展示的是我经过定向扩展后的下载结果:博客
P文件夹中的内容,表明具体的网页:
5、遗留问题
1.URL发现是否有必要独立,单独作成工具,根据入口网址+过滤规则,输出待下载对象的URL地址?当前采用的模式是复合式,逻辑上分离,物理上耦合。
2.如何实现增量下载和循环运行,当前任务启停是经过人工干预。须要改进。