admin 管理员组文章数量: 1087139
2024年4月20日发(作者:sql安装选择什么功能)
计算机工程与设计ComputerEngineeringandDesign 2010,31(6) 1243
・信息化技术・
利用JTidy和XML实现Web数据信息的批量提取
刘钊夏, 何明昕
(暨南大学计算机科学系,广东广州510632)
摘 要:为了有效地在Web上进行数据信息的提取,实现Web数据的清理与集成,针对发布批量格式化数据的网页类型,提
出了利用XML和JTidy自动从web页面批量提取数据信息的方法。根据该类网页的特点,基于开发一种通用程序的思想,对
页面标签结构进行分析与分类,讨论了识别数据元素和对数据元素进行分组等提取过程中的难点,在此基础上建立了总体
扫描与提取的算法。实验结果表明了批量提取信息方法的可行性与有效性。
关键词:Web内容提取;XML;JTidy工具包;Dom4j 3-具包;标记路径;频繁路径
中图法分类号:丁P311;TP319 文献标识码:A 文章编号:1000.7024(2010)06.1243—04
Extracting formatted batch data from web by JTidy and XML
LIU Zhao—xia.HE Ming—xin
(Department of Computer Science,Jinan University,Guangzhou 5 1 0632,China)
Abstract:To extract data information from web effectively and implement web data purification and integration,the approach that auto-
matically extract interested batch data from web pages is presented using XML nad JTidy tools.Targeted on the speciifc web and a general
processing idea,page structure is analyzed and classiifed.The main dififculties in design that are identifying and labeling data element,
rae discussed and the algorithms of general scanning and extracting are constructed.Finally,a case study of extracting a web page is
presented to veriyf the feasibility and validiyt of the method.
Key words:web content extraction;XML;JTidy;Dom4j;label path;frequent path
0引 言 1提取HTML网页内容存在的问题与改进方法
Web已逐渐成为重要的信息来源,大量公用信息在其中 如上所述,由于HTML本身的结构特点,HTML页面是一
发布。人们在日常生活和工作中往往有多种现实的需求,需 个难于用程序手段自动处理的对象。HTML页面的格式编排
要从网页中自动抽取感兴趣的数据信息。Web文档以HTML
中存在许多与用户所关注数据无关的内容描述,并且,由于要
格式为主。虽然HTML能方便地向用户呈现数据信息,但 动态添加标题以及编写其它服务器端脚本,文档结构可能在
HTML页面是一个难于用程序手段自动处理的对象,从中自 每次连接到页面时都需要进行更改。此外,很多HTML页面
动抽取与数据驱动的服务或应用程序相关的信息并非易事。 的格式结构不良,在对HTML进行语法分析并不十分严谨的
文献[1]中作者讨论了在对Web进行数据抽取时所面临的问 Web浏览器(如IE)中,有HTML语法错误的页面通常也能显
题并介绍了可用于解决这些问题的软件架构ANDES。而对
示和工作,但从Web页面提取数据变得更为困难。
于单个Web数据信息的提取,文献【2 3]中作者均通过由XPath 尽管如此,HTML在数据抽取方面仍然具有一定优势。由
函数定位数据所对应的锚节点的方法,自动从公开发布的Web
于其数据是半结构化的,用户所感兴趣的数据内容通常可以
文档中获取他们所感兴趣的数据内容,然后反复执行抽取过 用HTML树中深度嵌套的某个标签隔开,这使得抽取过程可
程,把结果合并到单个XML数据文件中或存入后台数据库。 以专门在文档的特定部分内执行。利用JTidy工具可以把
XPath路径虽然可以准确地定位锚,但它是根据具体文档的内 HTML转换成良构的XML文档来改正HTML页面设计的薄
容格式而指定的,文档改变路径也会随着改变;而且如果用户
弱之处。JTidy是可以免费获得的开源产品,用于改正HTML
感兴趣的是多个数据,也要为每个数据定位锚节点。本文尝
文档中的常见错误并生成格式编排良好的等价XML文档。作
试寻找一种新的方法,忽略文档格式来批量提取出感兴趣的
为新一代互联网数据组织和交换标准的XML,其数据是结构
数据信息,然后就可以从中抽取单个数据内容。
化的,在描述数据内容的同时能突出对结构的描述,极大地方
收稿日期:2009.03.30;修订日期:2009—05—30。
基金项目:广东省自然科学基金项目(5006061)。
作者简介:刘钊夏(1984一),女,广西梧州人,硕士研究生,研究方向为软件工程; 何明听(1963一),男,副教授,研究方向为软件工程、并
行分布式网络计算。E・mail.1iuzhaoxia123@yeah.net
1244 2010,3 1(6) 计算机工程与设计Computer Engineering and Design
便计算机从Web文件中提取数据,同时XML被普遍使用的
Web浏览器所支持,从而降低了数据转换的成本。
2基于XML和JTidy的web信息的批量提取
对于一些主要以数据信息反馈为主类型的网页(即在页
面中所需要的数据内容部分比其它部分要多得多),感兴趣的
信息通常在HTML树中由一些HTML标签隔开。根据HTML
文档结构的特点,这些数据部分所在叶子结点的标签及其在
文档中的层次结构均基本相同,从而使得所对应的标记路径
也基本相同(标记路径指从树的根结点到元素结点之间的有
次序的结点的集合);数据部分的标记路径出现次数最多,构
成频繁路径(出现次数最多的标记路径)。因此只要找到叶子
结点的频繁路径,就可以批量提取出所需数据信息。
本文基于如上的自动抽取思想,文献【4]中提出的算法,用
Java语言编程实现,尝试将以数据信息反馈为主导的网页中
的数据部分提取出来,以实现对数据初步的清理与集成,便于
对其进行更进一步的数据抽取。
本项数据提取技术的关键是把现有的Web页面转换成
XML,并使用适当的XML处理工具来处理XML结构的数据。
我们利用JTidy完成HTML到XML的转换,并选择Dom4i包
处理xML结构数据。
3方法概述与示例简介
3.1实现途径
本文实现的技术途径如下:
(1)获取指定Web地址的HTML文档对象;
(2)使用JTidy直接把HTML文档转换成XML文档(文献
[2.3]中使用的是Tidy);
(3)用Dom4i解析XML文档,利用文献[4】中搜索标记路
径的算法遍历XML文档找出叶子结点的频繁路径;
(4)输出这些频繁路径的结点值(这些结点值就是我们所
需要的数据信息,这里只是作了简单的输出)。此处有一个难
点是如何对各个数据进行分组,即判断各个子结点是否属于
同一个父结点。
3.2主要算法思路
本文参见文献[4]中提出的算法,用于寻找XML文档的频
繁路径。该算法首先对单个XML文档进行解析,形成文档
树;然后,对每个叶子节点的标记路径进行收集。
本文基于此算法,首先设置一个字符串数组用来保存路
径和该路径出现的次数,然后逐个扫描XML的标签,判断它
是不是叶子结点,若是则得到该叶子结点的标记路径,再判断
此路径是否在字符串数组中出现,若没有出现就存到数组中,
并设次数为1;若已出现过则把对应的次数加1。这样一次扫
描XML文档后就可以得到各个叶子结点的标记路径以及它
们所出现的次数,从而找出频繁路径。算法流程如图1所示。
下面以一个简单的例子介绍此算法是如何工作的。图2
为一个简短的XML文档,其叶子结点对应的标记路径如图
3所示。
从图2、图3可以看出,路径/People/Person/ID和/People/Per—
son/age各出现了3次,/People/Person/income出现了2次,其余
从XML文档中搜索叶子结点
把叶子结点的标记路径存入
数组,并统计其出现次数
0
从数组中提取频繁路径
图1算法流程
图2 XML文档示例
图3 XML文档(图2)相对应的标记路径与出现次数
路径出现了1次。出现3次的那条标记路径即为频繁路径。
用此算法找出频繁路径后,再根据它对XML文档作二次扫
描,得到此频繁路径的叶子结点的数据信息,即我们所需要的
信息。本文只对这些数据作了简单的输出。由于在判断各个
叶子结点是否属于同一个父结点时会有多种情况,本文仅考
虑了出现较多的若干情况。
3.3相关技术简介
3-3.1 JTidy
JTidy足用Java实现的HTMLTidy移植版本,提供了一个
对HTML的语法检查器和很好的打印功能。它将HTML文档
直接转换成XML文档,其实也是调用了Tidy包(Tidy包对
HTML字符串进行修正,并做标准化的处理)。类似它的 ̄Java
产品,JTidy可以用来清除格式不良或存在错误的HTML。JTidy
是sourceforge的开源项目,JTidy的主要工作是整理HTML文
件,关注更多的是HTML的规范,加上它有很多参数可以设
置,可以定制出符合用户要求的规范的XML文档格式。
JTidy主要完成以下两步工作:①为不成对的标签加上结
束符”/”,例如<br>转换为<br/>,<img>转换为<img/>;②给所有
属性值加引号,例 ̄13<a href=http://jtid sourceforge.net/>转换
为<a href=”http://jtidy.sourceforge.net/”>。更多关于Jndy的信
息可参见文献[5]。
我们尝试用JTidy处理众多的HTML网页,成功转换的比
例并不是很高。主要原因是目前网上的HTML代码格式大多
刘钊夏,何明昕:利用JTidy和XML实现Web数据信息的批量提取
都不很规范,而JTidy要求HTML文档中的标签至少是循环嵌
套的;否则就会报错,转换不成功。以http://www.skycn.corn/为
例,用JTidy将其转换成对应的XML文档,会提示错误信息:
Error:discardin2 unexpected</form>,这说明虽然网页中有
2010,3 1(6) 1245
</form>标签,但其所处的位置并不符合循环嵌套的原则,转换
中止。这无疑就增加了对Web页面进行数据提取的难度,解
决办法是要么开发出一个可以处理(自动提取)不规范文档的
智能工具软件,要么对HTML文档进行规范化。所幸的是,
Web网页HTML格式规范化的程度正逐渐提高,而发布批量
格式化数据的网页较普通网页通常有更规范的格式。
3_3.2 Dom4j
Dom4j也是sourceforge的开源项目,类似JDOM,主要用
于对XML文档的解析。它应用于Java平台,采用了Java集合
框架并完全支持DOM,SAX和JAXP。它的主要接口都在
org.dom4j这个包里定义。本文利用Dom4j包对转换后的XML
文档进行解析,由于Dom4j提供了各种接口和函数便于用户
创建、读写、遍历XML文档,且对XPath有良好的支持,我们
可以利用它方便地搜索出每个叶子结点的标记路径及其出现
次数,进而找到频繁路径。更多关于Dom4j的信息可参见
文献[6]。
3.4示例:地震数据
下面我们用示例介绍数据抽取的过程。假设我们有兴趣
跟踪几个月来中国各地的地震信息数据,且没有现成的软件
用于报告此类信息以满足我们的需求,于是我们需要从众多
公共网站收集此类信息。例如,我们可以对中国地震台网中
心(网址http://www.csndmc.ac.cn/newweb/more quickdata.jsp)列
出的地震数据加以提取。
从图4的网页界面可看出此HTML页面主要显示的就是
数据信息,符合本文的要求。把该文档转成XML格式,部分
内容如图5所示。从图5可以看出,经JTidy清洗与格式化后
的文档中相当多的信息仍然与我们所需要的数据信息无关;
但由于其所列出的地震数据内容远比其它无关的内容多,从
而前者所对应的叶子结点的标记路径出现次数也会比后者的
多,因此并不影响频繁路径的定位。遍历此XML文件,找出
频繁路径即为我们所需数据所对应的路径,从图6知频繁路
径为出现次数最多(4oo次)的那条标记路径:html/body/div/tab—
le/tr/td/table/tr/td/table/tr/td/。图7输出所需数据信息(每组数据
以“一”隔开,方便阅读及处理)。
3.5实验结果分析
从图7输出的结果可以看出此算法正确提取出了网页中
的各条地震数据信息并对其进行了准确的分组输出。每条地
震数据信息相当于一组数据,每组数据都包含日期、经度、纬
度、震级等数据元素。如何对这些数据元素进行分组归类正
是此算法的难点之一。从转换后的XML文档的标签结构可
知同~组的数据元素都属于相同的父结点,以图7的第一组
数据为例,它们都是叶子结点,其结点标记路径都为频繁路径
html/body/div/table/tr/td/table/tr/td/table/tr/td/,它们的父结点的标
记路径为html/body/div/table/tr/td/table/tr/tddtable/tr/。调用Dom4j
包中处理结点元素的getUniquePath方法后得到父结点的路径
实际为html/body/div/table[4]/tr/td/table[2]/tr/td[2]/table/tr[1]/。对
图4 2008年12月5日CENC发布的中国范围地震事件网页
图5转换后的XML文档(局部)
/html/head/meta:2
/html/head/title:l
/html/head/link:l
/html/body/div/table/tr/td/img:4
/html/body/div/table/tr/td:2
/html/body/div/tab!e/tr/td/br:2
/html/body/div/table/tr/td/table/tr/td/img:2
/html/body/div/table/tr/td/table/tr/td:2
/html/body/div/table/tr/td/table/tr/td/br:2
/html/body/div/table/tr/td/table/tr/
td/table/tr/td/img:l01
/html/body/div/table/tr/td/table/tr/
ld/table/tr/td/b/font:1
/html/body/div/table/tr/td/table/tr/
td/table/tr/td/a:200
/html/body/div/table/tr/td/table/tr/
td/table/tr/td:400
/html/body/div/table/tr/td/a:1
/html/body/map/area:1
图6各叶子结点的标记路径与出现次数
于不同的结点该方法会返回惟一的标记路径名,这样就可以
有效地识别出不同的父类结点,从而正确地对数据元素进
行分组。
1246 2010,31(6) 计算机工程与设计Computer Engineering and Design
工作将是不断完善文中的方法和解决动态提取问题。
本文所举的地震数据的提取只是沧海一粟。因特网上还
可获得很多诸如旅游信息、食品价格、班次查询等与人们日常
生活与工作息息相关的数据,若可对其进行自动提取,进而进
行深层的数据挖掘,将会为人们的生活提供极大的指导作用。
由此可见本文探索的现实意义。
为了更高效地从网上查找信息和知识,研究基于XML的
Web数据内容的提取还可以推动对非结构化数据如图形数据、
图像数据、多媒体数据的提取的发展。可以预期,Web数据提
取和XML的研究和应用在今后的若干年内会得到更广泛
的重视。
参考文献
图7输出结果(部分)
Jussi Myllymaki.Effective web data extraction with standard
正确分组后对于每个叶子结点值也会出现各种较为复杂
的情况需要处理,比如利用JTidy转换成XML文档会对某些
XML technologies【EB/OL].http://www10.org/cdrom/papers/102/
index.htm1.
叶子结点值自动换行显示,提取数据时就要去掉数值前面的
若干空格符;又如结点值中可能会包含对外部DTD的引用符
…
Jussi Myllymaki,Jared Jackson.Automatically extract informa-
号&#160等,需要找 ̄lJ&#160所代表的值并进行替换。本文只
tion with HTML,XML,and Java【EB/oL】.http://www.ibm.com/
是初步的提取出结点中的数据信息,尚未像IE那样考虑结点
developerworks/library/wa—wbdm/.
值中各种更为复杂的情况。
盖磊,王海军,刘俊民.一种基于XML的Web地震信息提取的
实现[J].计算机应用与软件,2007,24(8):103—105.
4结束语
梅东霞,张晓明.基于单个XML文档结构的数据挖掘[J].石油
本文基于XML方法和JTidy工具包,不同于文献[2-3]中
化工高等学校学报,2007,20(1):94—98.
对单个Web数据的抽取,而是探索Web数据信息的批量提取,
JTidy网站[EB/OL].http://jtidy.sollrcef0rge.net/.
对以数据信息反馈为主的Web页面进行了初步的数据抽取。
Dom4j网站[EB/OL].http://www.dom4j.org/.
对于抽取出来的数据组,可将其存放入数据库以供进一步的
唐红光,周铁军.基于XML的Web数据挖掘技术[J].信息科学,
数据分析与挖掘。目前程序只是实现了对指定地址web文档
2007(1):14.
中内容的提取,一些Web网站采用动态查询技术发布信息,而 杨彬.利用XML技术进行Web内容挖掘[J】.计算机与现代化,
当前程序还没有解决对动态地址信息的提取问题。进一步的
2005(1 1):48—50.
(上接第1242页)
[2】 Jason Wood,Ken Brodlie,Jungwook Seo,et a1.A web services
tical Computer Science,2006,146:33-41.
architecture for visualization[C].4th IEEE Internationa1 Confe—
[7] 倪晚成,刘连臣,吴澄.Web服务组合方法综述[J】_计算机工程,
rence on eScience,2008.
2008,34(4):79—8 1.
[3]3 Hu CH,Wu M,Liu GP,et a1.Research on schedule model and al・
[8】Harald Meyer,Dominik Kuropka.Requirements for automated
gorithm oriented client demand for service workflow[J].Journal service composition[C].Springer-Verlag Berlin Heidelberg,
ofChinese Computer Systems,2007,28(6):1008—1014.
2006:447—458.
【4] Wang H,Brodlie K,Handley J,et a1.Service-oriented approach to
[9] Akkiraju R,Srivastava B,Ivan AA,et a1.SEMAPLAN:Combi-
collaborative visualization【J】.Concurrency and Computation:
ning planning with semantic matching to achieve web service
Practice and Experience,2008,20:1289-1301.
composition[C].Proc ofthe Int’1 Confon Web Services.Chicago:
[5】 Silva C LFreire J,Callahan S T.Provenance for visualizations
IEEE Computer Society,2006:37—44.
[J].IEEE Computing in Science and Engineering,2007,9(5):
[10]Rao J,Su X.A Survey ofautomated web service composition me—
一
82—89.
thods[C].San Diego,California,USA:Pr0ceedings ofthe First In-
[6] Yasmine Charif,Nicolas S曲ouret.An overview of semantic web
ternational Workshop on Semantic Web Services and Web Pro—
services composition approaches[J].Electronic Notes in Theore・
cess Composition,2004:43—54.
版权声明:本文标题:利用JTidy和XML实现Web数据信息的批量提取 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1713586969a642072.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论