java html 处理为结构化入库 html文档就属于结构化数据_子节点

本发明属于网络信息处理领域,尤其涉及一种网页结构化数据的信息提取方法。

背景技术:

互联网的迅速发展带来了信息的爆炸式增长,Web己经发展为一个巨大的信息仓库,成为日益重要和最具潜力的全球信息传递与共享的资源。然而,想要快速、准确地从海量的资源中找到所需要的信息并被其他程序所应用,就成为了一大难题。因此,需要应用信息抽取技术从大量的半结构化信息中抽取出结构化的、符合主题的数据。由于HTML网页主要是供浏览的,并不是用来供操纵和使用的,其中的数据很难被应用程序直接使用。因此,将数据从网页中抽取出来并且将它们传递给应用程序使用依然是一个复杂、困难但又有意义的任务。

技术实现要素:

有鉴于此,本发明的目的在于提供一种网页结构化数据的信息提取方法,自动快速地处理大量WEB内容,并能提取到正确信息。

为实现上述目的,本发明采用如下技术方案:

一种网页结构化数据的信息提取方法,包括如下步骤:

a)对两个给定的结构相同的实例网页的HTML网页代码进行预处理,去除噪音信息;

b)对获取的每个网页信息,根据网页布局标签作为节点,通过布局标签的嵌套关系和层次关系,依次存入子节点,直至最内层的Text Node作为叶子节点,以此构造DOM树,并存入List;

c)对两个DOM树分别进行剪枝重构,把相同分支下叶子节点中的内容合并到一个叶子节点下,删减其余相同的分支;

d)对JSON串进行解析,获取其中包含的对象信息,并存入专门放置对象信息的List中,键名和键值对应存储;

e)对两个DOM重构树分别进行特征路径标记,遍历整棵DOM 重构树,对比其中的叶子节点内容是否与步骤d)中获取的对象信息相同,若相同则记录该叶子节点对应的特征路径;

f)将两个实例网页所查询出的特征路径进行比较,提取其中相同的特征路径,得到正确的目标对象信息的特征路径;若提取到若干相同的特征路径,则增加新的实例网页,重复步骤a)至步骤f),直至筛选得到正确的目标对象信息的特征路径;

g)对与实例网页结构相同的目标网页进行DOM树生成及重构,并进行特征路径标记,遍历整棵目标DOM重构树,对比已获得的目标对象信息的特征路径,判断是否相同,若相同,则输出对应位置的对象内容即目标对象信息。

进一步地,所述步骤c)的具体步骤如下:

c1:对待剪枝重构的DOM树,从根节点开始,寻找DOM树中第一个子节点数大于1的节点;

c2:对所有子节点两两之间进行判断,如果当前子节点的子节点个数为0且当前两个子节点类型相同,执行剪枝操作;

c3:如果当前子节点的子节点个数不为0,对其子节点树再递归调用DOM树重构算法;

c4:调用递归函数判断子节点树是否相同,如相同,调用递归函数实现对子节点树的剪枝操作,最后得到DOM重构树。

进一步地,所述步骤e)中特征路径标记包括特征标签路径标记和特征数字路径标记。

进一步地,特征数字路径标记算法如下:

e1:对待获取特征数字路径的DOM重构树,如果当前节点M的父节点个数不为0,获取并存储其父节点的特征数字路径,并在末尾存储节点M对应的编号数字;

e2:如果当前节点M的父节点个数为0,存储节点M对应的编号数字;

e3:对节点M的所有子节点依次进行如下操作:如果节点M的第i个子节点N的子节点个数不为0,对节点N递归调用特征数字路径标记算法;如果节点M的第i个子节点N的子节点个数为0,获取节点M的特征数字路径并存入节点N的特征数字路径中,并在末尾存储节点N对应的编号数字;

e4:最后得到DOM重构树的特征数字路径。

进一步地,步骤g)中,先根据已获得的目标对象信息的特征数字路径进行对象的查找和提取,如果根据特征数字路径没有提取到对象内容时,再根据目标对象信息的特征标签路径进行对象的查找和提取。

本发明与现有技术相比具有以下有益效果:

(1)本发明在构造DOM树时,以标签作为节点标志,构造所需的时间较少,并且能够很好的利用DOM树的树形结构表示原页面标签的嵌套和层次关系;

(2)本发明在DOM树的重构中,对DOM树进行了剪枝,保证了DOM树的最简,从而减少了存储资源的利用;

(3)在定位目标信息位置时,可以对多个实例网页进行对比,因而能够准确的获取目标对象信息的特征路径。

附图说明

图1是本发明网页结构化数据的信息提取方法的流程示意图;

图2是本发明DOM树重构算法流程图;

图3是本发明特征数字路径标记算法流程图;

图4是本发明实施例中一实例网页的特征路径结果图;

图5是本发明实施例中另一实例网页的特征路径结果图;

图6是本发明实施例中目标信息的特征路径结果图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

如图1所示,本发明提供一种网页结构化数据的信息提取方法,包括:

a)对两个给定的结构相同的实例网页的HTML网页代码进行预处理,去除噪音信息;

b)对获取的每个网页信息,根据网页布局标签作为节点,通过布局标签的嵌套关系和层次关系,依次存入子节点,直至最内层的Text Node作为叶子节点,以此构造DOM树,并存入List;

c)对两个DOM树分别进行剪枝重构,把相同分支下叶子节点中的内容合并到一个叶子节点下,删减其余相同的分支,如图2所示,DOM树重构的具体步骤如下:

c1:对待剪枝重构的DOM树,从根节点开始,寻找DOM树中第一个子节点数大于1的节点;

c2:对所有子节点两两之间进行判断,如果当前子节点的子节点个数为0且当前两个子节点类型相同,执行剪枝操作;

c3:如果当前子节点的子节点个数不为0,对其子节点树再递归调用DOM树重构算法;

c4:调用递归函数判断子节点树是否相同,如相同,调用递归函数实现对子节点树的剪枝操作,最后得到DOM重构树;

d)对JSON串进行解析,获取其中包含的对象信息,并存入专门放置对象信息的List中,键名和键值对应存储;

e)对两个DOM重构树分别进行特征标签路径标记和特征数字路径标记,遍历整棵DOM 重构树,对比其中的叶子节点内容是否与d)中获取的对象信息相同,若相同则记录该叶子节点对应的特征路径;

如图3所示,特征数字路径标记算法如下:

e1:对待获取特征数字路径的DOM重构树,如果当前节点M的父节点个数不为0,获取并存储其父节点的特征数字路径,并在末尾存储节点M对应的编号数字;

e2:如果当前节点M的父节点个数为0,存储节点M对应的编号数字;

e3:对节点M的所有子节点依次进行如下操作:如果节点M的第i个子节点N的子节点个数不为0,对节点N递归调用特征数字路径标记算法;如果节点M的第i个子节点N的子节点个数为0,获取节点M的特征数字路径并存入节点N的特征数字路径中,并在末尾存储节点N对应的编号数字;

e4:最后得到DOM重构树的特征数字路径。

f)将两个实例网页所查询出的特征路径进行比较,提取其中相同的特征路径,得到正确的目标对象信息的特征路径;若提取到若干相同的特征路径,则增加新的实例网页,重复步骤a)至步骤f),直至筛选得到正确的目标对象信息的特征路径;

g)对与实例网页结构相同的目标网页进行DOM树生成及重构,并进行特征路径标记,遍历整棵目标DOM重构树,先根据已获得的目标对象信息的特征数字路径进行对象的查找和提取,如果根据特征数字路径没有输出对象内容时,再根据目标对象信息的特征标签路径进行对象的查找和提取。

以提取豆瓣图书网页中“作者”这一对象内容为例,

首先,以豆瓣图书《朝花夕拾》网页和豆瓣图书《三国演义》网页为实例网页,在豆瓣图书《朝花夕拾》网页的URL地址为输入,“鲁迅”为实例对象输入的情况下,构造该网页的DOM树,并执行剪枝操作构成DOM重构树,查询“鲁迅”对象的特征路径时,会输出两个特征路径,出现这种情况是因为原网页的正文中,既有要获取的“作者”对应的“鲁迅”的位置,还有一个豆瓣给图书打标签的“鲁迅”,在遍历整棵DOM重构树的时候,也符合要求而被获取路径,路径结果如图4所示,图4中的第一行和第二行是“鲁迅”对象所在的两个特征标签路径,第三行和第四行是其特征数字路径,其中第一行和第三行是所要求的目标信息的所在,而第二行和第四行是text相同的干扰信息的位置。由此可见,这样的情况只有一个实例网页无法正确的找到所需的目标信息,所以还需要另外增加实例网页及其实例对象输入进行对比,才可以确定正确的对象信息位置。

增加另一实例网页豆瓣图书《三国演义》网页,执行上述相同的操作,对网页进行构造DOM树并重构,查询“罗贯中”对象的特征路径,路径结果如图5所示,图5中的第一行和第二行是“罗贯中”对象所在的两个特征标签路径,第三行和第四行是其特征数字路径。

因为这两个网页都是豆瓣图书介绍网页,所以基本格式都是相同的,因而导致了两个实例对应的两个特征标签路径都相同,这样就不能通过对比其特征标签路径来获得正确的对象路径。而因为特征数字路径对网页格式要求更严格,这两个网页布局和格式也不是完全相同,从而导致了这两个对象的特征数字路径有所区别,其中仍有一个相同的路径,这个就是所要找的“作者”对象的位置路径,而另一个就产生了差异,因此可以舍去。

比较后得到正确的目标对象信息的特征路径结果如图6所示,该路径就是所求的目标“作者”信息所对应的正确特征路径(包含了特征标签路径和特征数字路径)。

在本实施例中,只用了两个实例网页就获取到了正确的目标信息的特征路径,而在其他的情况下,可能输入的实例网页不止两个,两个实例网页进行对比,特征路径相同部分取交集,不同部分取并集,并将该结果与下一个实例网页进行比较,以此类推,通过对比获取目标特征路径。

对目标网页进行DOM树生成及重构,根据获得的特征数字路径快速找到对象的位置,并提取到对象内容,如果特征数字路径没有提取到对象内容,则根据特征标签路径,遍历整棵目标DOM重构树,对比已知的特征标签路径,判断是否相同,若相同,则输出对应位置的对象内容,该内容就是所求的对象信息。

本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。