李世忠
摘要 设计了一种网页数据采集系统。采集的数据统一保存到系统数据库,系统辅助用户完成常规采集参数的设置,包括访问间隔时间及数据存储方式等。用户对需要采集的数据进行描述,多次训练系统进行数据采集,生成数据识别模型。在目标网页发生变化时,在一定的范围内根据识别模型自动进行修正以适应新的网页结构,减少采集工作的人工干预工作量。
【关键词】数据采集系统 HTML 网页抓取
1 引言
以往传统的数据采集方式,通过使用爬虫程序将相关的Web页面下载到本地,然后根据XPATH或是正则表达式从页面的HTML中解析出结构化的数据。这种方式在目标的页面时常更新时,就需要投入大量的人力去做匹配规则更新,如果有一种技术能够识别并自动完成采集规则的修正,将会非常有意义。
2 工作原理
无论网页的内容如何变化,基本的用途是不会改变的:显示客户能够识别的内容(文字或是图片)并依据一定的设计规范;有标题栏、导航或操作栏,内容显示区域等。
通过抓取程序将HTML内容下载到本地,再通过算法将HTML格式的内容转换为标准的XML文档,由于HTML的编写可以不用很严谨,所以需要在转换时根据XML的标准进行修正。再由XML解析程序将XML内容进行格式化处理,加载识别模型中由模型进行分类整理,标记出哪些内容是属于正文、标题、列表、等数据;其流程如图1所示。
3 数据采集系统设计
3.1 系统设计原则
软件在设计时确定了“先进性、可扩展性、可伸缩性和易维护性”的原则。具体要求的设计原则如下:
(1)采用三层结构,界面采用组件化的设计,数据库表能根据代码自动生成,保持了技术的先进性。
(2)整理个程序由多个软件包组成,使用基于接口的方式进行开发,可以单独替换某一个软件包而不用整个系统重新编译,以提供可扩展性。
(3)系统采集中间层语言运行,软件不需要进行安装,拷贝到文件目录就可以正常运行。
(4)数据采集与转换组件可运行在单独计算机中,当采集性不足时可以通过简单的增加采集节点来提升数据处理规模及速度,保障系统的可伸缩性。
3.2 总体的系统设计
采集系统采用混合架构。服务端为B/S架构,客户端采用C/S结构;客户端通过WebService服务与服务端进行通信,获取采集任务及相关的参数配置并负责具体的网页数据攻取操作,然后将数据上传给中心服务,服务器再对数据进行集中的处理与转换操作。
服务端采用ASP.NET MVC+Service.客户端采用C#桌面和控制台程序。
整个系统分为三层:数据采集层、数据存储层及数据转换层。
4 实现的关键技术
4.1 分布程序间通信技术
系统采用组件的设计,采用Weo Service技术来进行多程序间的数据传输。
4.2 网络安全技术
网络传输安全主要采用SSL(Secure SocketLayer)技术来实现。SSL技术是目前应该比较广泛的通信安全技术,可以保证两个系统间的通讯安全。
4.3 数据分类及转换模型
数据转换程序使用C#语言进行开发,为保证转换的速度,XML的数据都提高加载到内存进行处理。
数据分类:服务器端程序将需要处理的XML数据发送到MSMQ消息队列,数据转换程序从消息中依次取出数据对数据进行处理,具体要求的分类规则如下:
(1)基于標准的HTML/HTML5标签的常用定义规范,将节点数据分类为:村标题、内容、内容条目、条目数据等。
(2)对分类之后的数据再次进行预定义规则匹配,如果能满足则证明数据可用,否则使用模型数据库中存储的下一条解析规则处理至到满足为止。
模型转换:转换程序由C#语言开发使用XML和JSON转换技术,根据XML的分类数据,从组件库中选择转换代码对数据进行转换,最后生成JSON数据。
5 结束语
通过将规范的HTML内容转换为严格的XML数据,对数据进行的规范化的处理,再利用模型库的规则对数据进行分类,再利用转换程序对数据进行处理分解数据采集的操作,每个过程都可定制和和单独替换,减少了因网页变动对系统的调整工作量。