随着计算机网络的迅速发展,Internet已经成为一个巨大的信息资源库,最常用的资源呈现、获取方式无疑是Web方式。在浩瀚的资源海洋中,如何准确地查找、分类存储、加工利用我们需要的信息资源,却是一个难题。
通过传统的搜索引擎可以方便地查找信息,数据量较小的情况下,可以人工手动存储和加工。不过如果数据量较大的话,就很难再采用人工的方法进行数据存储、加工和再利用。因此,需要设计实现网页数据采集工具,根据一定的采集规则,从指定的URL页面中进行信息抓取,并将匹配到的结果分析、整理后保存在指定的结构化数据库中,为数据的再开发利用提供基础。
1.网页数据采集原理
WEB网站通常可以分为首页、栏目页和内容页。首页是网站的整体展示。栏目是具有相同主题的内容集合,栏目页常常具有上一页、下一页的链接,但是其栏目首页的地址一般是相对固定的,栏目页中通常列表显示了内容页的超链接。内容页主要用于显示某一条具体内容。同一栏目下的内容页通常都是采用某一模板或者基于某种动态网页技术生成,再通过HTML或者XHTML格式展示。这些内容页的HTML源代码中有相似的部分,比如标题都在源码中的某一固定位置,应用了同一的CSS等。正是由于这些源码有规律可循,才使得页面数据采集可以方便地自动实现。
网页数据采集时通常采用栏目对栏目的方式,即将目标网站的某一栏目下的内容采集到本地的某一栏目中。一次完整地采集过程包括获取目标站点的栏目页源码,分析其内容页链接,轮询获取内容页源码、根据规则得到所需字段的值并入库等步骤。其流程如图1所示。
图1 采集过程流程示例
图2 网页数据采集系统用例图
2.网页数据采集
网页数据采集应该封装采集的具体实现,仅向用户提供界面友好、标识明确的采集参数设置菜单。用户在配置完采集参数后,即可实现向指定数据库采集指定网页的目的。
采集的关键要素包括入库栏目(含数据结构),采集源URL,栏目页中内容列表开始、结束代码,内容链接开始、结束代码,内容页中每个采集项的开始、结束代码。在用户配置过程中,需要根据入库栏目的数据结构自动生成内容页采集项的配置菜单。这些采集要素需要写入数据库的采集配置表中,以方便管理和调用。系统用例如图2所示。
对应不同的入库栏目,其数据结构一般不相同。采集配置表的设计必须拥有良好的可扩展性,能适应不同的数据结构。可以考虑使用XML语言或其他的自定义格式,在一个nvarchar字段中记录所有的内容页采集配置。使用XML语言这种方法时,待入库的数据结构和采集配置表中的某一条记录之间的关系如图3所示。
图3 待入库数据结构在采集配置表中的存储示意
XML结构可以很方便的使用.Net的系统函数读取成数组,从而还原成需采集的数据结构。在获取了待采集属性的值之后(源码匹配后,默认得到string型的数据),需要根据此数据结构初始化入库参数,从而实现对目标数据库的准确录入。
3.网页采集系统测试
系统后台数据库采用SQL Server 2005,开发工具使用Visual Studio 2008,开发语言选择C#,系统采用B/S结构。系统采集状态页面如图4所示(采集来源已隐藏):
图4 系统采集状态页面
经测试,系统基本实现了预期需求。人机界面友好,操作简单明了,可以根据用户对入库栏目(节点)的设置,引导用户设置各项采集参数,并使用多线程技术实现对指定URL下的内容页信息的后台采集。
4.网页数据采集系统总结
依据文中思想实现的web页面采集程序已实现了对WEB信息的自动、高效采集和存储,并能适应各种表结构,实用性较强。不过用户在设置采集规则时还需要对HTML语言有一定程度的了解,这必然会限制系统的使用范围。下一步还需就系统的智能化提醒和采集效率的提高作进一步的研究。并扩展系统功能,使它能适用于图片、图书等多媒体资源。
