网页信息表格化提取程序

2017-04-15 08:25罗锦才
课程教育研究·上 2017年10期

罗锦才

【摘要】本文介绍了基于MSHTML设计开发的网页信息表格化提取程序的原理、程序结构和工作流程,使用网页信息提取、网页元素解析、采集配置管理三大功能模块,实现对网页及其内部关联信息的提取、解析、整理和表格化显示,创新使用了对网页属性值和树路径值进行确认的二元检查机制,能够实现对指定信息的准确提取。本文还举例说明了程序的操作步骤和实际效果。

【关键词】MSHTML 信息自动提取 网页元素属性 表格化显示

【中图分类号】G64 【文献标识码】A 【文章编号】2095-3089(2017)10-0229-02

引言

当今是网络高速发展、信息量急剧膨胀的信息时代,人们通过信息来互相交流,认识世界。在信息中存在着大量有价值的信息要素,这些有价值的信息要素大都以网页的形式存在,其内容和格式千差万别。如果通过浏览器进行浏览和阅读不存在问题,但若需要将感兴趣的某类信息及其内部关联信息保存下来并进行整理,目前常用的工具普遍存在着某些缺点,比如网络蜘蛛等爬虫工具无法实现对内部关联信息的提取。因此,本人作者使用MSHTML语言设计了网页内部表格化提取的自动程序,可以完成对网页及内部关联信息的保存、整理和表格化显示,能够明显提高对信息的利用效率。

1.程序的设计思想

1.1 采集原理

众所周知网页是由HTML語言描述的,采集网页中信息的实质是从网页的HTML代码中提取我们需要的信息,如果直接从代码中提取,只能采取诸如正则表达式等文本匹配的方式进行采集。这样就会产生以下问题:一是使用不便,使用者不仅要了解HTML,还要了解正则表达式,此外还需要在大量的HTML代码中找到所需信息,然后考虑如何进行匹配;二是容错性差,代码中如果出现些许偏差就会导致文本匹配失败,如碰到制表符、回车、空格等等。

经过长期研究,作者发现MSHTML能够有效解决这些问题。MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素。

MSHTML提供了丰富的HTML文档接口,共包含IHTMLDocument、IHTMLDocument2、…、IHTMLDocument7等7种。其中,IHTMLDocument只有一个Script属性,是管理页面脚本用的;IHTMLDocument2接口跟C#的HtmlDocument类(即通过Web Browser控件直接获得的Document属性)很相似;IHTMLDocument3是跟Visual Basic 6.0里的文档对象相似的一个接口,基本上可以用到的方法都在其中。MSHTML还提供封装了对HTML元素完整操作的IHTMLElement接口,通过IHTMLElement,可以准确地判断HTML元素节点的类型,还可以获取HTML元素节点的所有属性。

1.2 二元检查机制

通过对元素属性值的比对,可以基本确定某个元素节点是否是要采集的节点。由于在网络中网页信息属性值相同的元素节点比例很高,属性值相同并不能唯一指定要采集的节点,还需要其他约束条件。通过分析,发现MSHTML还提供了访问当前节点的父节点的功能,我们可以通过对父节点的回溯,取得该节点在HTML文档树中的路径。这样,同时比较网页元素的属性值和树路径值,就能够精确判断节点是否是需采集节点。

同时使用属性值和树路径值进行元素确认的二元检查机制,是作者的一项创新。这种技术不仅能够极大提高采集节点的精确性,保证程序运行的效果,而且由于在程序中使用了智能判断语句,保证了程序的运行效率,兼顾了用户拥有良好的用户体验。

1.3主要功能设计

网页信息表格化提取程序能够实现对网页信息的可配置采集以及对信息进行表格化处理并保存,程序主要分三大块功能模块:

1.网页信息提取功能模块。提供信息提取功能的主界面,输入采集网址,采集页数及启动采集。

2.网页元素解析功能模块。将html代码解析成网页元素列表,并自动生成采集项的DOM树路径,以方便脚本的编写。

3.采集配置管理功能模块。用于管理采集配置,提供新增,编辑,删除等功能。

3.程序的主要功能实现方法

3.1采集配置管理

采集配置信息使用数据库保存,主要由一对主从表来记录。主表记录相应网站采集配置的名称、域名、翻页设置、载入等待设置等信息。从表记录采集项的名称、网页元素的ID、ClassName、TagName以及DOM树路径等信息。

3.2网页元素解析

本功能的目标主要是将网页HTML代码解析成HTML DOM网页元素并列出其各个属性值。通过对网页元素的遍历,找出所要采集的数据项和下一页的网络元素,将其记录到采集配置表中,同时将采集项的DOM树路径自动记录到配置表中。

3.2 网页信息自动抽取

本功能将网页中需要采集的数据项采集出来形成数据表,最后以XML文档的形式保存。程序运行原理如下:

Step1: 遍历网页中的所有元素,count变量记录网页元素的数量。

Step2: 将每个元素与采集配置中的采集项配置做比较确定该元素是否是要采集的元素。tab_item是一个adotable变量,它记录了当前页面的采集配置,webbro.OleObject.document.all.item(i)变量是网页元素,itembyscript()函数将判断网页元素是否需要采集。

Step3: 如果该元素是需要采集元素,进一步判断数据列缓存row里是否有该采集项的数据。如果没有,将采集来的数据存入row中,如果有,通过addrec()函数将采集来的数据行存入XML文档中。

4.运行测试

4.1 读取页面

本例将采用厦门本地知名论坛小鱼社区的一个帖子做测试。网页中的html代码将被解析成网页元素列表在“元素”页中显示。

图1 读取页面信息

4.2 配置采集

将操作界面切换至“元素”页,可以看到网页元素列表,在列表中找出需要采集的网页元素。设置采集配置如下:

(1)翻页。首先找到了“下一页”链接的网页元素,其tagname属性值为“A”,innertext属性值为“下一页”。将其设为“下一页”采集项。

(2)作者。其所属网页元素,classname属性值为“readName b”,tagname属性值为“DIV”。

(3)正文。其所屬网页元素,classname属性值为“tpc_content”,tagname属性值为“DIV”。

(4)DOM树路径。通过网页元素列表,自动生成DOM路径。

4.3查看采集结果

图2 表格化显示采集结果

5.结语

随着网络化的快速发展,人们对网页元素的需求越来越转向个性化分类和精确提取,以往面向全部内容的野蛮采集方式已经无法满足目前的需求,对其进行针对性的研究有着积极意义。

网页信息表格化提取程序通过网页信息提取、网页元素解析、采集配置管理三大功能模块的分工协作,实现对网页及其内部关联信息的提取、解析、整理和表格化显示,不仅克服了以往网页信息抓取工具不能提取内部关联网页信息的不足,使得程序的适用性、扩展性明显提高,而且程序中创新使用的对网页属性值和树路径值进行确认的二元检查机制,能够实现对指定信息的准确提取,极大提升了程序结果的精确性。

虽然网页信息表格化提取程序在精确性、适用性和扩展性上取得了进步,但也存在一些不足,希望以后能找到更好的解决方法。

1.某些操作界面的用户自动化程序不足,操作较为繁琐。

2.对海量数据的兼容性不足,处理效率低下。由于程序的获取页面采用WebBrowser技术,导致采集效率较低,在处理大数据时会出现效率低下的问题,还需要寻找更好的技术方法进行优化。

参考文献:

[1]房勇,李银胜.基于DOM状态转换的隐网页信息抽取算法[J]. 计算机应用与软件,2015,(09):17-21.

[2]张建营,王嘉梅,汤雪,胡刚.彝文网页信息采集技术研究[J]. 网络安全技术与应用,2014,(12):6-8.

[3]孙宝华.企业社会媒体主题信息提取算法研究[J].煤,2014,(01):72-76.

[4]金涛.网络爬虫在网页信息提取中的应用研究[J]. 现代计算机(专业版),2012,(01):16-18.

[5]朱志宁,黄青松. 快速的中文网页分类方法实现[J]. 山西电子技术,2008,(04):7-9.

[6]高军,王腾蛟,杨冬青,唐世渭.基于Ontology的Web内容二阶段半自动提取方法[J]. 计算机学报,2004,(03):310-318.