首页> 中国专利> 一种生成网页结构模板的方法及系统

一种生成网页结构模板的方法及系统

摘要

本申请提供了一种生成网页结构模板的方法及系统,以解决获取不同站点的网页结构模板的问题。所述方法包括:对样本网页进行相似网页的聚合计算,得到相似网页构成的集合;针对每个集合,解析集合中所有网页的页面结构,得到每个网页的DOM树结构;通过对集合中所有网页的DOM树结构进行分析,对应每个集合分别生成一个DOM树模板,并将该DOM树模板作为集合的网页结构模板。本申请利用不同站点的样本网页就可以自动分析出不同站点的网页结构模板,从而为网页信息抽取等应用提供了方便。

著录项

  • 公开/公告号CN102890681A

    专利类型发明专利

  • 公开/公告日2013-01-23

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201110204433.5

  • 发明设计人 蔡波洋;强琦;

    申请日2011-07-20

  • 分类号G06F17/30(20060101);

  • 代理机构11319 北京润泽恒知识产权代理有限公司;

  • 代理人苏培华

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2024-02-19 16:44:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-03-09

    授权

    授权

  • 2013-03-06

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110720

    实质审查的生效

  • 2013-01-23

    公开

    公开

说明书

技术领域

本申请涉及网页处理技术,特别是涉及一种生成网页结构模板的方法及 系统。

背景技术

互联网中的大部分网页都是利用动态网页技术生成。动态网页技术使用 固定的网页结构模板生成动态网页,当用户向服务器发送请求时,服务器通 过脚本语言提取出保存在数据库中的网页内容,填充进网页结构模板中,并 呈现给终端用户。

在各种基于互联网的应用中,获取这些动态页面的结构模板,可以为压 缩页面数据、抽取网页信息提供极大的支持。而对于一般的互联网应用,都 是针对站点自身的应用,因此不存在不了解网页结构模板的情况。

但是,对于面向整个互联网或多个站点的应用,如搜索引擎、网页信息 抽取等,需要抓取和分析大量不同站点的网页,这些网页大部分都是由动态 页面技术生成的。因此,如何获取不同站点的网页结构模板,以便在信息抽 取的环节提供信息定位以及批量处理数据,成为一个亟待解决的问题。

发明内容

本申请提供了一种生成网页结构模板的方法及系统,以解决获取不同站 点的网页结构模板的问题。

为了解决上述问题,本申请公开了一种生成网页结构模板的方法,包括:

对样本网页进行相似网页的聚合计算,得到相似网页构成的集合;

针对每个集合,解析集合中所有网页的页面结构,得到每个网页的DOM 树结构;

通过对集合中所有网页的DOM树结构进行分析,对应每个集合分别生 成一个DOM树模板,并将该DOM树模板作为集合的网页结构模板。

优选的,所述对应每个集合分别生成一个DOM树模板之后,还包括: 对每个DOM树模板自顶向下分别进行重复遍历,每次遍历时查找DOM树 模板中是否存在DOM结构相同的兄弟节点:如果存在,则将所述DOM结 构相同的兄弟节点合并为一个节点,并对该合并后的节点标注LOOP属性, 然后完成本次遍历后继续下一次的自顶向下遍历;如果完成本次遍历后整 个DOM树模板中都不存在DOM结构相同的兄弟节点,则结束遍历;将所 述不存在DOM结构相同的兄弟节点的DOM树模板作为集合对应的网页结 构模板。

优选的,所述对集合中所有网页的DOM树结构进行分析之前,还包括: 对每个DOM树自顶向下进行遍历,遍历时查找每个DOM树中是否存在 DOM结构相同的兄弟节点,如果存在,则将所述DOM结构相同的兄弟节 点合并为一个节点,并对该合并后的节点标注LOOP属性。

优选的,所述通过对集合中所有网页的DOM树结构进行分析,对应每 个集合分别生成一个DOM树模板,包括:对集合中所有网页的DOM树结 构自顶向下进行以下处理:

S1.确定当前节点,并从所述集合中获取包含当前节点的网页子集合;

S2.对所述网页子集合中的每个网页DOM树中当前节点的下一层孩子 节点进行编号;

S3.对所述网页子集合的所有DOM树中编号的下一层孩子节点进行不 同DOM树的两两对齐;

S4.根据对齐结果生成集合的DOM树模板中对应下一层孩子节点的结 构模板;

S5.遍历所述对应下一层孩子节点的结构模板,将所述结构模板中的每 个节点分别作为当前节点,重复S1至S5,直至下一层没有孩子节点为止。

优选的,所述步骤S3包括:针对所述网页子集合的所有DOM树中编 号的下一层孩子节点,将不同DOM树中具有任一唯一属性的节点进行两两 对齐,并将对齐的节点进行标记;根据标记节点的对齐位置分割出不同DOM 树中未标记的剩余节点,然后对所述未标记的剩余节点进行不同DOM树的 对齐操作。

优选的,所述唯一属性包括:

唯一标签名称,和/或

唯一id,和/或

唯一class属性,和/或

唯一href属性,和/或

唯一alt属性,和/或

唯一文字。

优选的,对所述未标记的剩余节点进行不同DOM树的对齐操作,包括: 将不同DOM树中未标记的剩余节点进行两两对齐的组合;对每一种组合方 案计算编辑距离;选择编辑距离最短的对齐方案进行对齐。

优选的,所述对每一种组合方案计算编辑距离,包括:设置每一种组合 方案的初始编辑距离;在每一种组合方案的对齐过程中,每删除一个节点, 则编辑距离加上预置的权重值;每添加一个节点,则编辑距离也加上预置的 权重值;对齐结束后,得到每一种组合方案的最终编辑距离。

优选的,所述步骤S4包括:将对齐结果中所有没有在网页子集合的全 部页面中出现并且位置确定的节点标注为OPTION属性;将对齐结果中所有 没有在网页子集合的全部页面中出现,在相同位置但不能对齐的节点标注为 ALTERNATIVE属性,同时这些节点组成GROUP;在对齐结果中,如果当 前层OPTION和ALTERNATIVE出现的总节点数百分比超过阈值,则开始 判断是否标注RANDOMGROUP属性,标注RANDOMGROUP的条件是同 时满足以下两个条件:第一,第一个OPTION或ALTERNATIVE开始至最 后一个OPTION或ALTERNATIVE结束的区间中的文本修饰标签数量的比 例超过阈值;第二,所述区间中的标签存在重复出现的情况。

优选的,所述对样本网页进行相似网页的聚合计算,得到相似网页构成 的集合,包括:获取样本网页;将样本网页按照域名进行分类;对每一类样 本网页按照URL路径进行划分;对每种按照URL路径划分出来的样本网页 再按照URL模式进行划分;对每种URL模式下的样本网页计算相似度,得 到相似网页构成的集合。

本申请还提供了一种生成网页结构模板的系统,包括:

网页聚合模块,用于对样本网页进行相似网页的聚合计算,得到相似网 页构成的集合;

页面结构解析模块,用于针对每个集合,解析集合中所有网页的页面结 构,得到每个网页的DOM树结构;

模板生成模块,用于通过对集合中所有网页的DOM树结构进行分析, 对应每个集合分别生成一个DOM树模板,并将该DOM树模板作为集合的 网页结构模板。

优选的,所述模板生成模块包括:

第一处理子模块,用于确定当前节点,并从所述集合中获取包含当前节 点的网页子集合;

第二处理子模块,对所述网页子集合中的每个网页DOM树中当前节点 的下一层孩子节点进行编号;

第三处理子模块,对所述网页子集合的所有DOM树中编号的下一层孩 子节点进行不同DOM树的两两对齐;

第四处理子模块,根据对齐结果生成集合的DOM树模板中对应下一层 孩子节点的结构模板;

第五处理子模块,遍历所述对应下一层孩子节点的结构模板,将所述结 构模板中的每个节点分别作为当前节点,重复第一处理子模块至第五处理子 模块的处理,直至下一层没有孩子节点为止。

优选的,所述第三处理子模块包括:

唯一属性对齐单元,用于针对所述网页子集合的所有DOM树中编号的 下一层孩子节点,将不同DOM树中具有任一唯一属性的节点进行两两对齐, 并将对齐的节点进行标记;

其他节点对齐单元,用于根据标记节点的对齐位置分割出不同DOM树 中未标记的剩余节点,然后对所述未标记的剩余节点进行不同DOM树的对 齐操作。

优选的,所述第四处理子模块包括:

OPTION属性标注单元,用于将对齐结果中所有没有在网页子集合的全 部页面中出现并且位置确定的节点标注为OPTION属性;

ALTERNATIVE属性标注单元,用于将对齐结果中所有没有在网页子集 合的全部页面中出现,在相同位置但不能对齐的节点标注为ALTERNATIVE 属性,同时这些节点组成GROUP;

RANDOMGROUP属性标注单元,用于在对齐结果中,如果当前层 OPTION和ALTERNATIVE出现的总节点数百分比超过阈值,则开始判断是 否标注RANDOMGROUP属性,标注RANDOMGROUP的条件是同时满足 以下两个条件:

第一,第一个OPTION或ALTERNATIVE开始至最后一个OPTION或 ALTERNATIVE结束的区间中的文本修饰标签数量的比例超过阈值;

第二,所述区间中的标签存在重复出现的情况。

与现有技术相比,本申请包括以下优点:

本申请提供了一种自动化的网页结构模板生成方法及系统,该方法首先 通过对样本网页进行相似网页的聚合计算,得到相似网页构成的集合;然后 利用改进的树编辑算法和一套预定义的页面元素属性,对每个集合中的网页 进行页面结构的分析,最终对应每个集合分别生成一个DOM树模板,所述 DOM树模板即为动态网页的结构模板。由此可知,本申请利用不同站点的 样本网页就可以自动分析出不同站点的网页结构模板,从而为网页信息抽取 等应用提供了方便。

附图说明

图1是本申请实施例所述一种生成网页结构模板的方法流程图;

图2是本申请实施例中网页聚合的示意图;

图3是本申请实施例中生成一个DOM树模板的流程图;

图4是本申请实施例中生成DOM树模板的示例图;

图5是本申请实施例中通过唯一属性对齐的示意图;

图6是本申请实施例中根据编辑距离选择对齐方案的示意图;

图7是本申请实施例中同时具备GROUP属性和LOOP属性的结构示意 图;

图8是本申请实施例中标注OPTION属性的示意图;

图9是本申请实施例中标注ALTERNATIVE属性的示意图;

图10是本申请实施例中标注RANDOMGROUP属性的示意图;

图11是本申请实施例所述一种生成网页结构模板的系统结构图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图 和具体实施方式对本申请作进一步详细的说明。

本申请提供了一种生成网页结构模板的方法及系统,通过对网页进行聚 类分析,获得相似页面的集合,并利用改进的树编辑算法和一套预定义的页 面元素属性,对集合页面进行分析,从而自动化地生成动态网页的结构模板。

下面通过实施例对本申请所述方法的实现流程进行详细说明。

参照图1,是本申请实施例所述一种生成网页结构模板的方法流程图。

步骤101,对样本网页进行相似网页的聚合计算,得到相似网页构成的 集合;

所述样本网页包含多个站点的动态网页,因此最终生成的网页结构模板 可能为多个。具体的网页聚合过程可参见图2,将在后面详述。

步骤102,针对每个集合,解析集合中所有网页的页面结构,得到每个 网页的DOM树结构;

目前普遍使用DOM树来描述网页的页面结构。DOM全称是Document  Object Model,即文档对象模型。DOM是一种用于HTML和XML文档的编 程接口,它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈 现方式。

脚本开发人员可以通过文档对象的属性、方法和事件来掌控、操纵和创 建动态的网页元素。每一个网页元素(如一个HTML标签)都对应着一个 对象(object,所谓“对象”,用白话说就是“东西”)。网页上的标签是一层 层嵌套的,最外面的一层是<HTML>,文档对象模型也这样一层层嵌套着, 但是通常被理解成一棵树的形状。树根是window或document对象,相当于 最外层的标签的外围,也就是整个文档。树根之下是子一级的对象,子对象 也有它自己的子对象,除了根对象以外,所有的对象都有自己的父对象,同 一对象的子对象之间就是兄弟的关系。

在这种由“父子兄弟”组成的“单性繁殖家族图谱树”框架结构中,每 个网页元素都可以被确切地定位。文档对象模型把整张网页组织成这样的一 个树状的结构,树结构中的每一个元素都被视为一个节点(node)。包括 JavaScript在内的各种编程语言都可以通过文档对象模型来访问和改变网页 的各种细节。

基于以上对DOM的介绍,通过对所有集合中的网页进行结构分析,可 以获得每个网页对应的一个DOM树。具体的DOM分析方法可采用现有技 术中的任何一种方法,本申请实施例对此不做任何限制。

步骤103,对每个DOM树识别兄弟节点之间的重复结构;

本步骤是优选步骤,可以在本实施例中执行,也可以跳过而直接进入下 一步骤104。

其中,所述重复结构是指DOM结构完全相同的兄弟节点。识别重复结 构时可以严格地匹配兄弟节点所代表的子树,如果子树匹配的节点数大于或 等于某个阈值,例如大于或等于2个,则这几个兄弟节点就存在重复结构。

基于所述识别方法,一种具体的实现方法是:

对每个DOM树自顶向下进行遍历,遍历时查找每个DOM树中是否存 在DOM结构相同的兄弟节点,如果存在,则将所述DOM结构相同的兄弟 节点合并为一个节点,并对该合并后的节点标注LOOP属性。

其中,所述LOOP属性是指重复出现的节点所具有的一种页面元素属 性,此处标注的目的是为了最终生成一个带有页面元素属性的网页结构模 板,其他页面元素属性的标注将在后面的内容中进行详细说明。

由上可知,识别出兄弟节点之间的重复结构,就可以将这些具有重复结 构的节点进行合并,从而为后面的对齐处理做准备,因为3个节点产生的 LOOP节点与5个节点产生的LOOP节点,在之后的环节中就能被对齐了。 此外,还因为这些具有重复结构的节点在最终生成的网页结构模板中的结构 是完全一样的,所以这种合并相当于生成模板之前的预处理,可以提高模板 生成的准确性。

步骤104,通过对集合中所有网页的DOM树结构进行分析,对应每个 集合分别生成一个DOM树模板;

本实施例中,采用改进的树编辑算法和一套预定义的页面元素属性,对 集合中的所有页面进行分析,最终生成一个带有节点特性的DOM树结构来 描述这个集合中的所有网页。如果有多个集合,则会生成多个DOM树模板, 每个DOM树模板对应一个集合。

现有技术中,树编辑算法常用于相似度计算中,而本实施例对这种树编 辑算法进行了改进,并用于生成网页结构模板。改进后的树编辑算法的具体 实现过程将在后面的内容中说明。

此外,本实施例还使用一套预定义的页面元素属性来描述网页结构模板 (即DOM树模板)中的节点特性。所述预定义的页面元素属性包括:

●NORMAL

一般节点

●LOOP

重复出现的节点

●GROUP

绑定多个节点,对节点序列有顺序要求

●RANDOMGROUP

绑定多个节点,组中的节点可以以任意次序重复出现

●OPTION

可能出现的节点,可以不出现

●ALTERNATIVE

多选一的情况

这些属性的标注也将在图3所示流程中说明。

因此,对应每个集合生成的网页结构模板不仅是一个DOM树,还是一 个具有节点特性描述的DOM树。

步骤105,对每个DOM树模板迭代查找重复结构,直至模板结构不再 发生变化。

本步骤是优选步骤,可以在本实施例的步骤104之后执行,也可以不执 行本步骤而在步骤104就结束整个流程,即直接将步骤104生成的DOM树 模板作为集合对应的最终网页结构模板。

在实际应用中,通过步骤104生成的DOM树模板中还可能在兄弟节点 之间存在重复结构。由于DOM树模板中有许多节点的属性被标注,所以原 先发现不了的重复结构可能被发现,从而避免重复结构的出现,进一步优化 了模板结构。

一种具体的迭代查找方法是:

对每个DOM树模板自顶向下分别进行重复遍历,每次遍历时查找DOM 树模板中是否存在DOM结构相同的兄弟节点:

如果存在,则将所述DOM结构相同的兄弟节点合并为一个节点,并对 该合并后的节点标注LOOP属性,然后继续其他节点的遍历,当完成本次所 有节点的遍历后再继续下一次自顶向下的重新遍历;

如果完成本次遍历后整个DOM树模板中都不存在DOM结构相同的兄 弟节点,则表明该DOM树模板的结构不再发生变化,因此可以结束迭代遍 历的过程。

最后,将所述不存在DOM结构相同的兄弟节点的DOM树模板,即结 构不再发生变化的DOM树模板作为集合对应的最终网页结构模板。

需要说明的是,在标注了OPTION、LOOP等上述列举的属性之后,这 些属性在判断DOM结构是否相同中也起作用,如OPTION节点在判断结构 相同的时候,匹配与不匹配都不影响最终的判断结果。

综上所述,利用不同站点的样本网页,经过上述步骤的处理,就可以自 动分析出不同站点的网页结构模板,从而为网页信息抽取等应用提供了方 便。

为了使本领域技术人员更加了解本申请的内容,下面通过图2至图10 进行更详细的说明。

1.对于图1中的步骤101,对样本网页进行相似网页的聚合计算,得到 相似网页构成的集合,可采用图2所示的具体实现方法。

参照图2,是本申请实施例中网页聚合的示意图。

对照图2,对样本网页进行相似网页聚合计算的过程如下:

1)获取样本网页;

通过抓取器从各个站点抓取互联网页面,并将抓取到的互联网页面作为 样本网页;

2)将样本网页按照域名进行分类;

即将所有的样本网页划分到各自所述的“域(domain)”中;

3)对每一类样本网页按照URL路径进行划分;

例如,一个站点的所有网页属于同一个“域”,将这个站点的所有网页 按照每一层URL路径进行划分,即可以划分为新闻类网页、军事类网页、 体育类网页、财经类网页等等;

4)对每种按照URL路径划分出来的样本网页再按照URL模式进行划 分;

所述URL模式就是一类URL具有的普遍规则,例如,对于下述新闻类 的网页,

http://news.sina.com.cn/c/2011-06-14/122522638158.shtml

http://news.sina.com.cn/c/2011-06-14/122022638179.shtml

http://news.sina.com.cn/c/2011-06-14/080322636461.shtml

推导出的URL模式是:

http://news.sina.com.cn/c/[date]/[number].shtml

其中,[date]表示时间,[number]表示数字。

5)对每种URL模式下的样本网页计算相似度,得到相似网页构成的集 合。

相似度计算方法有多种选择,可以使用文本相似度算法,也可以依据传 统的树编辑算法计算相似度,若超过阈值,则认为网页相似。本申请实施例 对相似度的计算方法没有限制,可采用现有的任意一种计算方法,得到如图 2所示的集合A、集合B、...,每个集合中包含多个相似网页。

2.对于图1中的步骤104,通过对集合中所有网页的DOM树结构进行 分析,对应每个集合分别生成一个DOM树模板,可采用图3所示的具体实 现方法。

如前所述,本申请实施例采用改进的树编辑算法和一套预定义的页面元 素属性,对集合中的所有页面进行分析,最终生成一个带有节点特性的DOM 树结构来描述这个集合中的所有网页。

下面将以某一个集合中的所有网页为例,说明如何生成对应这个集合的 网页结构模板。

参照图3,是本申请实施例中生成一个DOM树模板的流程图。

参照图4,是本申请实施例中生成DOM树模板的示例图。

下面将对照图4的示例,对图3的每个步骤进行解释说明。

一个集合中所有网页的DOM树结构自顶向下进行以下处理:

S1.确定当前节点,并从所述集合中获取包含当前节点的网页子集合;

首先是将集合中所有网页的DOM树的根节点都确定为当前节点,由于 每个网页的DOM树只有唯一一个根节点,因此首次包含当前节点的网页子 集合中将包含这个集合中所有的网页。

对照图4,假设一个集合中包含100个网页,首次将这100个网页的DOM 树根节点作为当前节点,则提取出的网页子集合包含所有的100个网页,即 图中n首次取值100。

S2.对所述网页子集合中的每个网页DOM树中当前节点的下一层孩子 节点进行编号;

其中,所述当前节点的下一层孩子节点是指与当前节点直接相连的下一 层节点,不包含孩子的孩子节点。

对照图4,网页1(Page1)中根节点的下一层孩子节点包含三个,分别 编号为①、②、③;网页2(Page2)中根节点的下一层孩子节点包含两个, 分别编号为④、⑤,等等,一直到网页n(Pagen)中根节点的下一层孩子节 点x、y、z。由此可知,所述编号一般为不同的号码。当然,根据实际应用 的不同,也可以采用其他方式进行编号。

S3.对所述网页子集合的所有DOM树中编号的下一层孩子节点进行不 同DOM树的两两对齐;

所述对齐是指按照一定的策略将不同网页DOM树的节点进行两两网页 的对齐,其中两两对齐的是不同DOM树中属于同一层的节点。本步骤具体 采用的对齐方法将在后面的内容中详细说明,下面首先通过图4解释对齐的 含义。

例如,对照图4,按照一定的对齐策略,可以将网页1(Page1)中编号 为①的节点与网页2(Page2)中编号为④的节点进行两两对齐,并将编号④ 改为编号①;将网页1(Page1)中编号为②的节点与网页2(Page2)中编 号为⑤的节点进行两两对齐,并将编号⑤改为编号②。

以此对齐方式,最后还可以将网页n(Page n)中编号为y的节点与网 页2(Page2)中编号为①的节点进行两两对齐,并将编号y改为编号①;将 网页n(Page n)中编号为z的节点与网页2(Page2)中编号为②的节点进 行两两对齐,并将编号z改为编号②。

经过以上对齐操作,最终得到这100个网页的根节点的下一层孩子节点 的对齐结果,所述对齐结果为x、①、②、③。其中,节点x只出现在网页 n(Page n)中,节点③只出现在网页1(Page 1)中,节点①和②在网页1 (Page1)至网页n(Page n)中均出现过。

S4.根据对齐结果生成集合的DOM树模板中对应下一层孩子节点的结 构模板;

一个集合将生成一个DOM树模板,即用这一个DOM树模板来描述集 合中所有网页的DOM树结构。本步骤具体采用的生成模板的方法将在后面 的内容中详细说明,下面首先通过图4解释模板的含义。

对照图4,根据对齐结果生成的DOM树模板中对应根节点下一层孩子 节点的结构模板表示为x、①、②、③,并且这四个节点还具有节点属性。 其中,由于节点x和节点③并非在当前网页子集合的所有网页中出现,而只 出现在部分网页中,因此这两个节点的属性标注为OPTION,即表示是可选 节点。由于节点①和②在当前网页子集合的所有网页中均出现,因此这两个 节点的属性可标注为NORMAL,即表示是一般节点。

综上,图4中对应根节点的下一层孩子节点的结构模板,表示所有这100 个网页的DOM树中,位于每个根节点的下一层孩子节点都可以通过节点x、 ①、②、③及其属性进行描述。

S5.遍历所述对应下一层孩子节点的结构模板,将所述结构模板中的每 个节点分别作为当前节点,重复S1至S5,直至下一层没有孩子节点为止。

对照图4,遍历对应根节点的下一层孩子节点的结构模板x、①、②、 ③,其中每个节点将作为当前节点重复S1至S5,直至下一层没有孩子节点 为止。例如,首先以节点x作为当前节点,返回S1循环执行;然后以节点 ①作为当前节点,返回S1循环执行;以此类推,直到将节点③作为当前节 点,返回S1循环执行。

由上述图3的S1至S5以及图4所述的示例可以看出,所述对齐操作是 一个不断重复迭代的过程,每次对齐只对齐属于同一层的节点,每次迭代生 成的结构模板中每个节点都将作为当前节点,进行下一层孩子节点的迭代和 对齐,一直到没有孩子节点可以对齐则停止。

上述处理流程中,步骤S3将采用改进的树编辑算法进行对齐操作;步 骤S4将采用一套预定义的页面元素属性对DOM树模板中的节点进行标注, 最终生成一个带有节点特性的DOM树模板。下面分别详细说明。

1)步骤S3将采用改进的树编辑算法进行对齐操作。

如前所述,树编辑算法常用于相似度计算中,步骤S3通过改进这种树 编辑算法实现对齐操作,并用于生成网页结构模板。步骤S3具体包括以下 步骤:

A.遍历网页子集合的所有DOM树中编号的下一层孩子节点,将不同 DOM树中具有任一唯一属性的节点进行两两对齐,并将对齐的节点 进行标记;

其中,所述唯一属性是相对于同层节点而言的,唯一属性可以是:

●唯一标签名称

●唯一id(即标识信息)

●唯一class属性(class属性用于指定元素属于何种样式的类)

●唯一href(base,src)属性(href属性规定页面中所有相对链接的基准 URL)

●唯一alt属性(alt属性是一个用于网页语言HTML和XHTML、为输 出纯文字的参数属性。它的作用是当HTML元素本身的物件无法被 渲染时,就显示alt(替换)文字作为一种补救措施)

●唯一文字

一个节点只要具备上述任意一个唯一属性,就成为具有唯一属性的节 点。因此,具有唯一属性的节点是指:

●具有唯一标签名称的节点,或者

●具有唯一id的节点(包含本身),或者

●具有唯一class的节点(包含本身),或者

●具有唯一href(base,src)属性值的节点(包含本身),或者

●具有唯一alt属性值的节点(包含本身),或者

●具有唯一文字的节点(包含本身)

以图5为例,一个包含当前节点的所有网页构成的网页子集合中,有页 面A和页面B,其中页面A中当前节点的下一层孩子节点编号为A、B、C, 页面B中当前节点的下一层孩子节点编号为D、E、F、G。将节点B和F 通过唯一属性进行对齐,得到的对齐结果如图所示。节点B和F对齐之后, 节点A、C、D、E、G都认为是未被标记的节点,这些节点还没有进行对齐 操作。

B.根据标记节点的对齐位置分割出不同DOM树中未标记的剩余节点,

然后对所述未标记的剩余节点进行不同DOM树的对齐操作。

参照图5,将节点B和F对齐后,节点A和节点D、E位于对齐位置的 左侧,节点C和节点G位于对齐位置的右侧。下面说明如何对齐左侧的节 点,并对齐右侧的节点。

对齐步骤如下:

首先,将不同DOM树中未标记的剩余节点进行两两对齐的组合;

然后,对每一种组合方案计算编辑距离;

最后,选择编辑距离最短的对齐方案进行对齐。

以对齐左侧的节点为例,参照图6,需要将网页A中的节点A与网页B 中的节点D或E进行对齐,因此两两组合的方案有两种,一种方案是A与 D对齐,另一种方案是A与E对齐。

对于每一种对齐方案,通过编辑距离的比较确定选择哪一种对齐方案。 本申请实施例中,可采用的一种编辑距离的计算方法如下:

设置每一种组合方案的初始编辑距离,例如设为0;

在每一种组合方案的对齐过程中,每删除一个节点,则编辑距离加上预 置的权重值,例如1;每添加一个节点,则编辑距离也加上预置的权重值, 例如1;

对齐结束后,得到每一种组合方案的最终编辑距离。

当然,也可以采用其他的计算方法计算编辑距离,如添加或删除一个节 点时设置不同权值等方法。

图6中,节点A可表示为标签div和属性a,节点D可表示为标签div, 节点E可表示为标签div和属性a、文本修饰标签img。

对于第一种对齐方案,计算编辑距离:

若节点A与节点D对齐,则对齐标签div,并删除节点A的属性a,添 加节点E的标签div及其属性a、文本修饰标签img,因此编辑距离是4。

对于第二种对齐方案,计算编辑距离:

若节点A与节点E对齐,则对齐标签div及属性a,并添加节点D的标 签div,添加文本修饰标签img,因此编辑距离是2。

将这两种对齐方案的编辑距离进行比较,第一种对齐方案的编辑距离大 于第二种对齐方案的编辑距离,因此选择第二种对齐方案。

此外,还有一种例外情况是,如果有多种对齐方案的编辑距离相同,那 么还需要采用下面的方法进行选择:

首先,查找同时具备GROUP属性和LOOP属性的结构;

如前所述,GROUP属性的定义是绑定多个节点,并且对节点序列有顺 序要求;LOOP属性的定义是重复出现的节点。

参照图7,是本申请实施例中同时具备GROUP属性和LOOP属性的结 构示意图。

图7所示示例中,网页A包含节点A和B,网页B包含节点A、B、A、 B。有两种对齐方案,一种是将网页A中的节点A、B分别与网页B中前两 个节点A、B对齐,另一种是将网页A中的节点A、B分别与网页B中后两 个节点A、B对齐。

由图7可知,节点A、B重复出现,符合LOOP属性的定义,并且A、 B按照先后顺序出现,因此也符合GROUP属性的定义。因此,这种同时具 备GROUP属性和LOOP属性的结构一般是一些连续的序列,该序列在其他 页面中的对齐位置不固定。

然后,选择对齐位置最靠前的对齐方案。

如图7所示,第一种方案的对齐位置靠前,第二种方案的对齐位置靠后, 因此选择第一种对齐方案。这是因为从所有节点对齐的代价角度考虑,对齐 位置靠前的方案对齐的代价要小于对齐位置靠后的方案对齐的代价。

综上所述,通过上述对齐操作,就可以将一个网页子集合中的所有网页 进行两两对齐,并生成一个DOM树模板。

2)步骤S4将采用一套预定义的页面元素属性对DOM树模板中的节点 进行标注,最终生成一个带有节点特性的DOM树模板。

如前所述,预定义的页面元素属性包括:

●NORMAL

一般节点

●LOOP

重复出现的节点

●GROUP

绑定多个节点,对节点序列有顺序要求

●RANDOMGROUP

绑定多个节点,组中的节点可以以任意次序重复出现

●OPTION

可能出现的节点,可以不出现

●ALTERNATIVE

多选一的情况

对DOM树模板中的节点标注这些页面元素属性的方法如下:

●将所有没有在网页子集合的全部页面中出现并且位置确定的节点标 注为OPTION属性;

参照图8,是本申请实施例中标注OPTION属性的示意图。

假设一个网页子集合包含页面A和页面B,页面A中的节点B与页面 B中的节点B对齐,页面A中的节点A在页面B中没有出现,因此生成的 结构模板中节点A的属性为OPTION,节点B的属性为NORMAL。

●将所有没有在网页子集合的全部页面中出现,在相同位置但不能对齐 的节点标注为ALTERNATIVE属性,同时这些节点组成GROUP;

参照图9,是本申请实施例中标注ALTERNATIVE属性的示意图。

假设一个网页子集合包含页面A和页面B,页面A中的节点B与页面 B中的节点B对齐,页面A中的节点A和页面B中的节点C不同对齐,因 此生成的结构模板中节点A和节点C的属性都为OPTION,并且节点A和 C组成GROUP。

●如果当前层(包含所有子孙)OPTION和ALTERNATIVE出现的总节 点数百分比超过阈值,则开始判断是否标注RANDOMGROUP属性;

标注RANDOMGROUP的条件是同时满足以下两个条件:

第一,第一个OPTION或ALTERNATIVE开始至最后一个OPTION或 ALTERNATIVE结束的区间中的文本修饰标签数量的比例超过阈值;

具体的,所述区间可以是第一个OPTION开始至最后一个OPTION结 束,也可以是第一个OPTION开始至最后一个ALTERNATIVE结束,还可 以是第一个ALTERNATIVE开始至最后一个OPTION结束,或者是第一个 ALTERNATIVE开始至最后一个ALTERNATIVE结束。

其中,文本修饰标签如:

″a″,″b″,″big″,″em″,″font″,″i″,″span″,″strong″,″u″,″p″,″img″,等等。

第二,所述区间中的标签存在重复出现的情况。

参照图10,是本申请实施例中标注RANDOMGROUP属性的示意图。

假设一个网页子集合中包含网页A、B、C,对于属于同层的某一层节点, 页面A包含节点a、font、img,页面B包含节点a、b、img,页面C包含接 待你img、b、a。对这一层节点进行编号,分别从1编到9。然后进行对齐 操作,页面A的节点①、③分别与页面B的节点④、⑥对齐,页面B的节 点④与页面C的节点⑨对齐。

根据对齐结果生成的模板包含节点⑦、⑧、①、②、⑤、③,如图所示, 其中节点⑦、⑧具有OPTION和GROUP属性,节点②、⑤具有 ALTERNATIVE和GROUP属性。

假设OPTION和ALTERNATIVE出现的总节点数百分比超过阈值,则 判断:

OPTION区间中的文本修饰标签,如节点⑦对应img,节点⑧对应b, 其数量比例假设已超过阈值;或者,ALTERNATIVE区间中的文本修饰标签, 如节点②对应font,节点⑤对应b,其数量比例假设已超过阈值;

并且,OPTION区间中的标签存在重复出现的情况,如OPTION区间中 的img、b重复在节点3和节点5出现;

因此,可以将标签img、b、a、font这四个节点标注为RANDOMGROUP。

综上所述,上述内容详细说明了自动化生成网页结构模板的过程,利用 本申请实施例所述方法生成的网页结构模板,可以应用到网页信息抽取等互 联网应用中。由于动态页面的结构模板能够方便的定位页面中的任意元素, 因此通过在模板中标注需要抽取的信息,就能完成对所有同类动态页面的信 息抽取。同时所述方法完成了对LOOP元素的识别,可以自动发现多条数据 的存在。并且,在页面结构发生变化时,能够通过模板的匹配情况选择合并 或者抛出异常警告模板失效。

需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述 为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述 的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时 进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于 优选实施例,所涉及的动作并不一定是本申请所必须的。

基于上述方法实施例的说明,本申请还提供了相应的生成网页结构模板 系统的实施例,来实现上述方法实施例所述的内容。

参照图11,是本申请实施例所述一种生成网页结构模板的系统结构图。

所述生成网页结构模板的系统可以包括网页聚合模块11、页面结构解析 模块12和模板生成模块13,其中,

网页聚合模块11,用于对样本网页进行相似网页的聚合计算,得到相似 网页构成的集合;

页面结构解析模块12,用于针对每个集合,解析集合中所有网页的页面 结构,得到每个网页的DOM树结构;

模板生成模块13,用于通过对集合中所有网页的DOM树结构进行分析, 对应每个集合分别生成一个DOM树模板,并将该DOM树模板作为集合的 网页结构模板。

优选的,所述生成网页结构模板的系统还可以包括:

模板优化模块14,用于模板生成模块13对应每个集合分别生成一个 DOM树模板之后,对每个DOM树模板自顶向下分别进行重复遍历,每次 遍历时查找DOM树模板中是否存在DOM结构相同的兄弟节点:如果存在, 则将所述DOM结构相同的兄弟节点合并为一个节点,并对该合并后的节点 标注LOOP属性,然后完成本次遍历后继续下一次的自顶向下遍历;如果 完成本次遍历后整个DOM树模板中都不存在DOM结构相同的兄弟节点, 则结束遍历;将所述不存在DOM结构相同的兄弟节点的DOM树模板作为 集合对应的网页结构模板。

优选的,所述生成网页结构模板的系统还可以包括:

预处理模块15,用于模板生成模块13对集合中所有网页的DOM树结 构进行分析之前,对每个DOM树自顶向下进行遍历,遍历时查找每个DOM 树中是否存在DOM结构相同的兄弟节点,如果存在,则将所述DOM结构 相同的兄弟节点合并为一个节点,并对该合并后的节点标注LOOP属性。

进一步的,所述模板生成模块13具体可以包括以下子模块:

第一处理子模块,用于确定当前节点,并从所述集合中获取包含当前节 点的网页子集合;

第二处理子模块,对所述网页子集合中的每个网页DOM树中当前节点 的下一层孩子节点进行编号;

第三处理子模块,对所述网页子集合的所有DOM树中编号的下一层孩 子节点进行不同DOM树的两两对齐;

第四处理子模块,根据对齐结果生成集合的DOM树模板中对应下一层 孩子节点的结构模板;

第五处理子模块,遍历所述对应下一层孩子节点的结构模板,将所述结 构模板中的每个节点分别作为当前节点,重复第一处理子模块至第五处理子 模块的处理,直至下一层没有孩子节点为止。

所述模板生成模块13按照第一处理子模块到第五处理子模块的顺序, 对集合中所有网页的DOM树结构自顶向下循环进行处理。

优选的,其中的第三处理子模块具体可以包括以下单元:

唯一属性对齐单元,用于针对所述网页子集合的所有DOM树中编号的 下一层孩子节点,将不同DOM树中具有任一唯一属性的节点进行两两对齐, 并将对齐的节点进行标记;

其他节点对齐单元,用于根据标记节点的对齐位置分割出不同DOM树 中未标记的剩余节点,然后对所述未标记的剩余节点进行不同DOM树的对 齐操作。

其中,所述其他节点对齐单元通过以下方式对所述未标记的剩余节点进 行不同DOM树的对齐操作:将不同DOM树中未标记的剩余节点进行两两 对齐的组合;对每一种组合方案计算编辑距离;选择编辑距离最短的对齐方 案进行对齐。计算编辑距离时,先设置每一种组合方案的初始编辑距离,例 如为0;然后在每一种组合方案的对齐过程中,每删除一个节点,则编辑距 离加上预置的权重值,如1;每添加一个节点,则编辑距离也加上预置的权 重值,如1(当然此时也可以是与删除节点不同的权重值,如2);最后对齐 结束后,得到每一种组合方案的最终编辑距离。

优选的,其中的第四处理子模块具体可以包括以下单元:

OPTION属性标注单元,用于将对齐结果中所有没有在网页子集合的全 部页面中出现并且位置确定的节点标注为OPTION属性;

ALTERNATIVE属性标注单元,用于将对齐结果中所有没有在网页子集 合的全部页面中出现,在相同位置但不能对齐的节点标注为ALTERNATIVE 属性,同时这些节点组成GROUP;

RANDOMGROUP属性标注单元,用于在对齐结果中,如果当前层 OPTION和ALTERNATIVE出现的总节点数百分比超过阈值,则开始判断是 否标注RANDOMGROUP属性,标注RANDOMGROUP的条件是同时满足 以下两个条件:

第一,第一个OPTION或ALTERNATIVE开始至最后一个OPTION或 ALTERNATIVE结束的区间中的文本修饰标签数量的比例超过阈值;

第二,所述区间中的标签存在重复出现的情况。

进一步,所述网页聚合模块11具体可以包括:

网页获取子模块,用于获取样本网页;

域名分类子模块,用于将样本网页按照域名进行分类;

URL路径划分子模块,用于对每一类样本网页按照URL路径进行划分;

URL模式划分子模块,用于对每种按照URL路径划分出来的样本网页 再按照URL模式进行划分;

相似度计算子模块,用于对每种URL模式下的样本网页计算相似度, 得到相似网页构成的集合。

综上所述,上述生成网页结构模板的系统利用不同站点的样本网页就可 以自动分析出不同站点的网页结构模板,从而为网页信息抽取等应用提供了 方便。

对于上述生成网页结构模板的系统实施例而言,由于其与方法实施例基 本相似,所以描述的比较简单,相关之处参见图1至图10所示方法实施例 的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明 的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见 即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语 仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求 或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

而且,上文中的“和/或”表示本文既包含了“和”的关系,也包含了“或” 的关系,其中:如果方案A与方案B是“和”的关系,则表示某实施例中 可以同时包括方案A和方案B;如果方案A与方案B是“或”的关系,则 表示某实施例中可以单独包括方案A,或者单独包括方案B。

以上对本申请所提供的一种生成网页结构模板的方法及系统,进行了详 细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以 上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于 本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上 均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号