基于DIV位置的网页正文抽取方法和装置.pdf

上传人:a*** 文档编号:4057104 上传时间:2018-08-13 格式:PDF 页数:20 大小:746.31KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010553327.3

申请日:

2010.11.22

公开号:

CN102479181A

公开日:

2012.05.30

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20101122|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

中国电信股份有限公司

发明人:

吴晔; 刘勋华; 谢亨骏; 李辉遒; 郭玲; 曹琳; 万东; 詹国强; 刘舟; 李晓佳

地址:

100032 北京市西城区金融大街31号

优先权:

专利代理机构:

中国国际贸易促进委员会专利商标事务所 11038

代理人:

孙宝海

PDF下载: PDF下载
内容摘要

本发明公开了一种基于DIV位置的网页正文抽取方法和装置。其中,该方法包括利用HTML页面在DOM树中的DIV块信息重新构建DIV块;保留重新构建DIV块中的原子DIV块,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块;对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;对包含网页正文的DIV块进行内容提取,以获取网页正文。本发明能够防止同一DIV块被重复分析,从而提高了分析效率。同时,根据每个原子DIV块的参数来选取包含网页正文的DIV块,以有效去除HTML网页中的噪音信息,在很大程度上提高了从HTML网页中获取正文信息的准确度。

权利要求书

1: 一种基于 DIV 位置的网页正文抽取方法, 其特征在于, 包括 : 利用 HTML 页面在 DOM 树中的 DIV 块信息重新构建 DIV 块 ; 保留所述重新构建 DIV 块中的原子 DIV 块, 所述原子 DIV 块为除其本身之外不包含任 何其他 DIV 块的 DIV 块 ; 对每个原子 DIV 块进行参数分析, 根据分析结果选取出包含网页正文的 DIV 块 ; 对所述包含网页正文的 DIV 块进行内容提取, 以获取网页正文。
2: 根据权利要求 1 所述的方法, 其特征在于, 在对所述包含网页正文的 DIV 块进行内容 提取之前, 所述方法还包括 : 如果原子 DIV 块与所述包含网页正文的 DIV 块间隔预定间隙且位于所述包含网页正文 的 DIV 块的正上方或正下方, 则确定与所述包含网页正文的 DIV 块间隔预定间隙且位于所 述包含网页正文的 DIV 块的正上方或正下方的 DIV 块为包含网页正文的 DIV 块。
3: 根据权利要求 1 所述的方法, 其特征在于, 所述利用 HTML 页面在 DOM 树中的 DIV 块 信息重新构建 DIV 块的步骤包括 : 从所述 HTML 页面代码的起始处开始直至所述 HTML 页面代码的结束处获取两个 DIV 块 开始标签之间的非 DIV 代码段 ; 从所述 HTML 页面代码的起始处开始直至所述 HTML 页面代码的结束处获取两个 DIV 块 结束标签之间的非 DIV 代码段 ; 为获取的非 DIV 代码段补齐 DIV 块开始标签和 DIV 块结束标签。
4: 根据权利要求 1 所述的方法, 其特征在于, 保留所述重新构建 DIV 块中的原子 DIV 块 的步骤包括 : 在所述重新构建 DIV 块中计算出每个 DIV 块相对页面 BODY 标签的层次值 ; 根据计算出的层次值判断每个 DIV 块是否为所述原子 DIV 块 ; 去除所述重新构建 DIV 块中的非原子 DIV 块。
5: 根据权利要求 1 所述的方法, 其特征在于, 对每个原子 DIV 块进行参数分析, 根据分 析结果选取出包含网页正文的 DIV 块的步骤包括 : 从多个原子 DIV 块中查找出横向宽度大于预定宽度的原子 DIV 块 ; 从查找出的横向宽度大于预定宽度的原子 DIV 块中找出面积最大的 DIV 块作为所述包 含网页正文的 DIV 块。
6: 根据权利要求 1 所述的方法, 其特征在于, 在重新构建 DIV 块之前, 所述方法还包 括: 过滤所述 HTML 页面中的 Javascript 代码和冗余标签。
7: 一种基于 DIV 位置的网页正文抽取装置, 其特征在于, 包括 : DIV 块重构模块, 用于利用 HTML 页面在 DOM 树中的 DIV 块信息重新构建 DIV 块 ; 原子 DIV 块保留模块, 与所述 DIV 块重构模块相连, 用于保留所述重新构建 DIV 块中的 原子 DIV 块, 所述原子 DIV 块为除其本身之外不包含任何其他 DIV 块的 DIV 块 ; 网页正文 DIV 块选取模块, 与所述原子 DIV 块保留模块相连, 用于对每个原子 DIV 块进 行参数分析, 根据分析结果选取出包含网页正文的 DIV 块 ; 网页正文提取模块, 与所述网页正文 DIV 块选取模块相连, 用于对所述包含网页正文 的 DIV 块进行内容提取, 以获取网页正文。 2
8: 根据权利要求 7 所述的装置, 其特征在于, 所述装置还包括 : 网页正文 DIV 块确定模块, 分别与所述网页正文 DIV 块选取模块和所述网页正文提取 模块相连, 用于如果原子 DIV 块与所述包含网页正文的 DIV 块间隔预定间隙且位于所述包 含网页正文的 DIV 块的正上方或正下方, 则确定与所述包含网页正文的 DIV 块间隔预定间 隙且位于所述包含网页正文的 DIV 块的正上方或正下方的 DIV 块为包含网页正文的 DIV 块。
9: 根据权利要求 7 所述的装置, 其特征在于, 所述 DIV 块重构模块包括 : 第一非 DIV 代码段获取单元, 用于从所述 HTML 页面代码的起始处开始直至所述 HTML 页面代码的结束处获取两个 DIV 块开始标签之间的非 DIV 代码段 ; 第二非 DIV 代码段获取单元, 用于从所述 HTML 页面代码的起始处开始直至所述 HTML 页面代码的结束处获取两个 DIV 块结束标签之间的非 DIV 代码段 ; 标签添加单元, 分别与所述第一非 DIV 代码段获取单元和所述第二非 DIV 代码段获取 单元相连, 用于为获取的非 DIV 代码段补齐 DIV 块开始标签和 DIV 块结束标签。
10: 根据权利要求 7 所述的装置, 其特征在于, 所述原子 DIV 块保留模块包括 : 层次值计算单元, 用于在所述重新构建 DIV 块中计算出每个 DIV 块相对页面 BODY 标签 的层次值 ; 原子 DIV 块判断单元, 与所述层次值计算单元相连, 用于根据计算出的层次值判断每 个 DIV 块是否为所述原子 DIV 块 ; 非原子 DIV 块去除单元, 与所述原子 DIV 块判断单元相连, 用于去除所述重新构建 DIV 块中的非原子 DIV 块。
11: 根据权利要求 7 所述的装置, 其特征在于, 所述网页正文 DIV 块选取模块包括 : 第一查找单元, 用于从多个原子 DIV 块中查找出横向宽度大于预定宽度的原子 DIV 块; 第二查找单元, 与所述第一查找单元相连, 用于从查找出的横向宽度大于预定宽度的 原子 DIV 块中找出面积最大的 DIV 块作为所述包含网页正文的 DIV 块。
12: 根据权利要求 7 所述的装置, 其特征在于, 所述装置还包括 : 无 用 信 息 过 滤 模 块, 与 所 述 DIV 块 重 构 模 块 相 连, 用 于 过 滤 所 述 HTML 页 面 中 的 Javascript 代码和冗余标签。

说明书


基于 DIV 位置的网页正文抽取方法和装置

    技术领域 本发明涉及信息采集与处理技术领域, 特别地, 涉及一种基于 DIV(Division) 位 置的网页正文抽取方法和装置。
     背景技术 随着 Internet 及其技术的迅速发展, 在 Web 上已经形成不计其数以 HTML(Hyper Text Mark-up Language) 形式存在的网页信息。 但是, Web 页面通常含有很多用户并不关心 的信息, 例如, 广告、 导航链接等噪音信息, 它们分布在网页正文的四周, 有的甚至嵌入到网 页正文中。 这些噪音信息给信息搜索、 数据挖掘、 机器翻译和文本摘要等信息研究带来诸多 困难。因此, 如何准确地从 Web 网页中提取正文信息, 已经成为目前噬待解决的技术问题。
     发明内容
     本发明要解决的一个技术问题是提供一种基于 DIV 位置的网页正文抽取方法和 装置, 能够去除 HTML 网页中的噪音信息以准确地从 HTML 网页中提取正文信息。
     根据本发明的一方面, 提出了一种基于 DIV 位置的网页正文抽取方法, 包括利用 HTML 页面在 DOM(Document Object Model) 树中的 DIV 块信息重新构建 DIV 块 ; 保留重新 构建 DIV 块中的原子 DIV 块, 原子 DIV 块为除其本身之外不包含任何其他 DIV 块的 DIV 块 ; 对每个原子 DIV 块进行参数分析, 根据分析结果选取出包含网页正文的 DIV 块 ; 对包含网页 正文的 DIV 块进行内容提取, 以获取网页正文。
     根据本发明抽取方法的一个实施例, 在对包含网页正文的 DIV 块进行内容提取之 前, 该方法还包括如果原子 DIV 块与包含网页正文的 DIV 块间隔预定间隙且位于包含网页 正文的 DIV 块的正上方或正下方, 则确定与包含网页正文的 DIV 块间隔预定间隙且位于包 含网页正文的 DIV 块的正上方或正下方的 DIV 块为包含网页正文的 DIV 块。
     根据本发明抽取方法的另一实施例, 利用 HTML 页面在 DOM 树中的 DIV 块信息重新 构建 DIV 块的步骤包括从 HTML 页面代码的起始处开始直至 HTML 页面代码的结束处获取两 个 DIV 块开始标签之间的非 DIV 代码段 ; 从 HTML 页面代码的起始处开始直至 HTML 页面代 码的结束处获取两个 DIV 块结束标签之间的非 DIV 代码段 ; 为获取的非 DIV 代码段补齐 DIV 块开始标签和 DIV 块结束标签。
     根据本发明抽取方法的又一实施例, 保留重新构建 DIV 块中的原子 DIV 块的步骤 包括在重新构建 DIV 块中计算出每个 DIV 块相对页面 BODY 标签的层次值 ; 根据计算出的层 次值判断每个 DIV 块是否为原子 DIV 块 ; 去除重新构建 DIV 块中的非原子 DIV 块。
     根据本发明抽取方法的再一实施例, 对每个原子 DIV 块进行参数分析, 根据分析 结果选取出包含网页正文的 DIV 块的步骤包括从多个原子 DIV 块中查找出横向宽度大于预 定宽度的原子 DIV 块 ; 从查找出的横向宽度大于预定宽度的原子 DIV 块中找出面积最大的 DIV 块作为包含网页正文的 DIV 块。
     根据本发明抽取方法的再一实施例, 在重新构建 DIV 块之前, 该方法还包括过滤HTML 页面中的 Javascript 代码和冗余标签。
     根据本发明的另一方面, 还提出了一种基于 DIV 位置的网页正文抽取装置, 包括 DIV 块重构模块, 用于利用 HTML 页面在 DOM 树中的 DIV 块信息重新构建 DIV 块 ; 原子 DIV 块保留模块, 与 DIV 块重构模块相连, 用于保留重新构建 DIV 块中的原子 DIV 块, 原子 DIV 块为除其本身之外不包含任何其他 DIV 块的 DIV 块 ; 网页正文 DIV 块选取模块, 与原子 DIV 块保留模块相连, 用于对每个原子 DIV 块进行参数分析, 根据分析结果选取出包含网页正 文的 DIV 块 ; 网页正文提取模块, 与网页正文 DIV 块选取模块相连, 用于对包含网页正文的 DIV 块进行内容提取, 以获取网页正文。
     根据本发明抽取装置的一个实施例, 该装置还包括网页正文 DIV 块确定模块, 分 别与网页正文 DIV 块选取模块和网页正文提取模块相连, 用于如果原子 DIV 块与包含网页 正文的 DIV 块间隔预定间隙且位于包含网页正文的 DIV 块的正上方或正下方, 则确定与包 含网页正文的 DIV 块间隔预定间隙且位于包含网页正文的 DIV 块的正上方或正下方的 DIV 块为包含网页正文的 DIV 块。
     根据本发明抽取装置的另一实施例, DIV 块重构模块包括第一非 DIV 代码段获取 单元, 用于从 HTML 页面代码的起始处开始直至 HTML 页面代码的结束处获取两个 DIV 块开 始标签之间的非 DIV 代码段 ; 第二非 DIV 代码段获取单元, 用于从 HTML 页面代码的起始处 开始直至 HTML 页面代码的结束处获取两个 DIV 块结束标签之间的非 DIV 代码段 ; 标签添加 单元, 分别与第一非 DIV 代码段获取单元和第二非 DIV 代码段获取单元相连, 用于为获取的 非 DIV 代码段补齐 DIV 块开始标签和 DIV 块结束标签。 根据本发明抽取装置的又一实施例, 原子 DIV 块保留模块包括层次值计算单元, 用于在重新构建 DIV 块中计算出每个 DIV 块相对页面 BODY 标签的层次值 ; 原子 DIV 块判 断单元, 与层次值计算单元相连, 用于根据计算出的层次值判断每个 DIV 块是否为原子 DIV 块; 非原子 DIV 块去除单元, 与原子 DIV 块判断单元相连, 用于去除重新构建 DIV 块中的非 原子 DIV 块。
     根据本发明抽取装置的再一实施例, 网页正文 DIV 块选取模块包括第一查找单 元, 用于从多个原子 DIV 块中查找出横向宽度大于预定宽度的原子 DIV 块 ; 第二查找单元, 与第一查找单元相连, 用于从查找出的横向宽度大于预定宽度的原子 DIV 块中找出面积最 大的 DIV 块作为包含网页正文的 DIV 块。
     根据本发明抽取装置的再一实施例, 该装置还包括无用信息过滤模块, 与 DIV 块 重构模块相连, 用于过滤 HTML 页面中的 Javascript 代码和冗余标签。
     本发明提供的基于 DIV 位置的网页正文抽取方法和装置, 利用 DOM 树中的 DIV 块 信息重新构建 DIV 块, 并且保留原子 DIV 块, 以防止同一 DIV 块被重复分析, 从而提高了分 析效率。 同时, 根据每个原子 DIV 块的参数来选取包含网页正文的 DIV 块, 以有效去除 HTML 网页中的噪音信息, 在很大程度上提高了从 HTML 网页中获取正文信息的准确度。
     附图说明
     此处所说明的附图用来提供对本发明的进一步理解, 构成本申请的一部分。在附 图 1 是本发明网页正文抽取方法的一个实施例的流程示意图。5图中 :
     CN 102479181 A
     说明书3/8 页图 2 是本发明实施例重新构建 DIV 块的示意图。 图 3 是本发明实施例保留原子 DIV 块的示意图。 图 4 是本发明实施例计算预定宽度的示意图。 图 5 是本发明网页正文抽取方法的另一实施例的流程示意图。 图 6 是本发明网页正文抽取方法的又一实施例的流程示意图。 图 7 是本发明网页正文抽取方法的再一实施例的流程示意图。 图 8 是本发明网页正文抽取方法的再一实施例的流程示意图。 图 9 是本发明抽取装置的一个实施例的结构示意图。 图 10 是本发明抽取装置的另一实施例的结构示意图。 图 11 是本发明抽取装置的又一实施例的结构示意图。 图 12 是本发明抽取装置的再一实施例的结构示意图。 图 13 是本发明抽取装置的再一实施例的结构示意图。 图 14 是本发明抽取装置的再一实施例的结构示意图。具体实施方式
     下面参照附图对本发明进行更全面的描述, 其中说明本发明的示例性实施例。本 发明的示例性实施例及其说明用于解释本发明, 但并不构成对本发明的不当限定。
     以下对至少一个示例性实施例的描述实际上仅仅是说明性的, 决不作为对本发明 及其应用或使用的任何限制。
     本发明的目的在于提供一种基于 DIV 位置的网页正文抽取方法和装置, 能够解决 基于 DIV 布局的网页正文抽取问题。
     为了实现本发明的目的, 引入了原子 DIV 块的概念 : 原子 DIV 块就是没有包含 其它 DIV 块的 DIV 块。因此, 可以将 HTML 页面定义为一个二元组 Ω = (Φ, δ), 其中, 表示给定页面上的所有原子 DIV 块的集合, δ = (ζ1, ζ2, …, ζT) 则定义了各个 DIV 块的排版属性, 其中, 可以包括 DIV 块四条边在页面中的绝对坐标值 ( 即, xy 坐标的坐标值 )、 DIV 块的宽度和高度 ( 例如, 可以通过递归计算获得网页中 DIV 块 的绝对坐标值和宽度与高度值 )。为了使 HTML 页面符合上述定义, 需要对页面的 DIV 块进 行重新构建, 并根据构建后的 DIV 块的位置关系, 只保留原子 DIV 块, 使页面上的 DIV 块在 位置上不存在包含与重叠关系。对于一个符合上述定义的二元组的页面, 对 DIV 块进行结 构和位置分析, 定位位于网页中位置最重要的 DIV 块, 并抽取出网页正文。可选地, 还可以 通过扩展算法使正文抽取的准确率更高。 图 1 是本发明网页正文抽取方法的一个实施例的流程示意图。
     如图 1 所示, 该实施例可以包括以下步骤 :
     S102, 由于 HTML 页面在浏览器中是由 DOM 进行描述的, DOM 中包含许多可以用于 分析和模式匹配的有效信息, 在 DIV 布局的网页中, DOM 模型由多个 DIV 块组成, DIV 块作为 一个容器, 可以用来存放页面的文字和图片信息, 网页正文就存在 DIV 块之中, 同时, 在网 页正文的四周还可能分布着各种噪音信息, 因此, 可以利用 HTML 页面在 DOM 树中的 DIV 块 信息对 HTML 页面重新构建 DIV 块, 从而为网页中的每一段零散代码的两端都加上一对 DIV 标签, 以保证网页中的各个独立区域都被一个 DIV 块所包含 ;
     举例说明, 可以从 HTML 页面代码的起始处开始直至 HTML 页面代码的结束处获取 两个 DIV 块开始标签之间的非 DIV 代码段 ; 例如, 可以使用正则表达式, 从网页代码中获取 所有包含在两个 DIV 开始标签 之间, 且不包含 标签的代码 ;
     从 HTML 页面代码的起始处开始直至 HTML 页面代码的结束处获取两个 DIV 块结束 标签之间的非 DIV 代码段 ; 例如, 可以获取所有包含在两个 DIV 开始标签 之间, 且不 包含 标签的代码 ;
     为获取的非 DIV 代码段补齐 DIV 块开始标签和 DIV 块结束标签 ; 即, 为找到的每一 个代码段的两端分别加上一对 DIV 标签, 使其被包含在一个 DIV 块中。
     图 2 是本发明实施例重新构建 DIV 块的示意图。
     如图 2 所示, 左侧为重新构建前的 HTML 页面, 右侧为重新构建后的 HTML 页面, 在 构建过程中, 为两个非 DIV 代码段分别添加了 DIV 块的开始标签和结束标签。
     S104, 每个 DIV 块的排版属性由外部的层叠样式表 (CascadingStyle Sheets, CSS) 进行定义和控制, 通常情况下, 网页上的 DIV 块在位置上存在很多包含关系, 甚至重叠 关系, 这样就会造成 DIV 块被重复分析, 从而降低了分析的效率, 因此, 为了使页面中的 DIV 块彼此之间在位置上不存在包含和重叠关系以防止被重复分析, 可以去除重新构建 DIV 块 中的非原子 DIV 块, 保留其中的原子 DIV 块, 原子 DIV 块为除其本身之外不包含任何其他 DIV 块的 DIV 块 ( 如图 2 中的 DIV 块 E、 F、 G 或 H), 从而实现页面中的 DIV 块在位置上都彼 此独立, 不存在包含和覆盖关系, 使 DIV 块符合步骤 S106 分析的需要, 并且还可以避免 DIV 块被重复分析, 以提高分析效率 ; 举例说明, 可以在重新构建 DIV 块中计算出每个 DIV 块相对页面 BODY 标签的层次 值; 根据计算出的层次值判断每个 DIV 块是否为原子 DIV 块 ; 去除重新构建 DIV 块中的非原 子 DIV 块 ;
     继续以图 2 为例进行说明, 为了使页面中的 DIV 彼此之间在位置上没有存在包含 和覆盖关系, 重新构建后的各 DIV 块 ( 包括 DIV 块 A ~ H) 的属性值发生了变化, 可以重新 从 DOM 树中计算出各个 DIV 块相对页面 BODY 标签的层次值。通过观察层次值可以很清晰 地判断出一个 DIV 块是否包含有其他 DIV 块。在图 2 中, 从最外层 DIV 开始, 按自上而下的 顺序 ( 即, DIV 块从 A- > B- > C- > E- > G- > F- > H- > D 的顺序 ), DIV 块的层次值依 次为 1- > 2- > 2- > 3- > 3- > 3- > 3- > 2。从层次值序列可以看出, DIV 块 A 和 DIV 块 C 由于其右边元素的层次值大于其自身的层次值, 所以它们里面还包含有其他 DIV 块, 故 作为非原子 DIV 块不予保留。 经上述处理之后, 各个 DIV 块的层次值都已全部变为 1, 即, 均 成为原子 DIV 块。其变化过程如图 3 所示。
     S106, 对每个原子 DIV 块进行参数分析, 根据分析结果选取出包含网页正文的 DIV 块;
     从大量网页的统计分析数据可以看出, 包含网页正文的 DIV 块一般符合下述两个 条件 : (1) 在横向方向上, 其横跨所有原子 DIV 块覆盖区域的一半以上 ; (2) 在面积上, 其面 积是所有原子 DIV 块中面积最大的。具体地, 可以循环取出每个原子 DIV 块, 分别验证每 个 DIV 块是否符合上述条件 (1), 若符合, 则将其放置到一个数组 A 中, 遍历完毕后, 对数组 A 中的 DIV 块再按照面积从大到小的顺序进行排序, 取出面积最大的 DIV 块, 并放入数组 B 中。
     举例说明, 可以从所有原子 DIV 块中查找出横向宽度大于预定宽度的原子 DIV 块 ; 其中, 预定宽度可以是覆盖 HTML 页面中所有原子 DIV 块宽度的长度的一半, 换句话说, 如果 在 HTML 页面中建立 xy 坐标轴, 以左下脚为坐标原点, 覆盖 HTML 页面中所有原子 DIV 块宽 度的长度 Max_Width 就是最左侧的原子 DIV 块的左侧边的 x 轴坐标值与最右侧的原子 DIV 块的右侧边的 x 轴坐标值之差, 如图 4 所示 ;
     从查找出的横向宽度大于预定宽度的原子 DIV 块中找出面积最大的 DIV 块作为包 含网页正文的 DIV 块。
     S108, 对包含网页正文的 DIV 块进行内容提取, 以获取网页正文。
     该实施例利用 DOM 树中的 DIV 块信息重新构建 DIV 块, 并且保留原子 DIV 块, 以防 止同一 DIV 块被重复分析, 从而提高了分析效率。同时, 根据每个原子 DIV 块的参数来选取 包含网页正文的 DIV 块, 以有效去除 HTML 网页中的噪音信息, 在很大程度上提高了从 HTML 网页中获取正文信息的准确度。
     图 5 是本发明网页正文抽取方法的另一实施例的流程示意图。
     如图 5 所示, 该实施例可以包括以下步骤 :
     S202, 利用 HTML 页面在 DOM 树中的 DIV 块信息重新构建 DIV 块, 即, 将页面中的 DIV 块完整化和标准化。 S204, 保留重新构建 DIV 块中的原子 DIV 块, 以消除页面中 DIV 块之间的包含与重 叠关系, 其中, 原子 DIV 块为除其本身之外不包含任何其他 DIV 块的 DIV 块。
     S206, 对每个原子 DIV 块进行参数 ( 例如, 宽度和面积 ) 分析, 根据分析结果选取 出包含网页正文的 DIV 块, 以实现对包含网页正文 DIV 块的定位。
     S208, 如果原子 DIV 块与包含网页正文的 DIV 块间隔预定间隙且位于包含网页正 文的 DIV 块的正上方或正下方, 则确定与包含网页正文的 DIV 块间隔预定间隙且位于包含 网页正文的 DIV 块的正上方或正下方的 DIV 块为包含网页正文的 DIV 块 ;
     举例说明, 如果网页正文都集中存放在一个大的 DIV 块中, 那么上述实施例的数 组 B 中包含的就是网页正文的 DIV 块, 然而, 还有很多网页是以多个宽度相同的 DIV 块进行 纵向布局的, 彼此之间有一定的间隙, 因此, 为了使网页正文的抽取准确率更高, 可以设定 一个间隙阀值 T, 先从数组 A 中取出一个 DIV 块, 如果该 DIV 块与数组 B 中的 DIV 块在坐标 轴上处于上下关系, 即, 位于正上方间隔 T 处或者正下方间隔 T 处 ( 例如, 可以通过两个 DIV 块的相邻边的 y 轴坐标的差值与 T 判断 ), 则可以将该 DIV 块加入数组 B, 否则丢弃。如此 循环直到数组 A 为空。此时, 数组 B 中的元素就是包含网页正文 DIV 块集合, 对这些 DIV 块 中的内容 ( 可以是文字信息或图片信息 ) 进行提取, 组合之后即可获取网页正文。
     S210, 对包含网页正文的 DIV 块进行内容提取, 以获取网页正文。
     该实施例与上述实施例相比, 由于考虑了多种页面设计格式, 从而使得网页正文 的提取准确率更高。
     图 6 是本发明网页正文抽取方法的又一实施例的流程示意图。
     如图 6 所示, 该实施例可以包括以下步骤 :
     S302, 过滤 HTML 页面中的无关代码, 例如, Javascript 代码和冗余标签 ;
     在 HTML 页面代码中, 除了包含用户可见的页面内容外, 一般还包含一些诸如 Javascript 代码和冗余标签等用户并不关心的内容, 为了得出一个结构代码较为简洁的页
     面, 可以先对上述代码进行过滤。
     S304, 利用 HTML 页面在 DOM(Document Object Model) 树中的 DIV 块信息重新构 建 DIV 块。
     S306, 保留重新构建 DIV 块中的原子 DIV 块, 原子 DIV 块为除其本身之外不包含任 何其他 DIV 块的 DIV 块。
     S308, 对每个原子 DIV 块进行参数分析, 根据分析结果选取出包含网页正文的 DIV 块。
     S310, 对包含网页正文的 DIV 块进行内容提取, 以获取网页正文。
     该实施例与上述实施例相比, 由于引入无关代码过滤机制, 为网页正文抽取的后 续步骤提供了简洁且清晰的代码, 因此, 在很大程度上提高了网页正文的抽取效率。
     图 7 是本发明网页正文抽取方法的再一实施例的流程示意图。
     如图 7 所示, 在远程获取一个 HTML 页面的源代码之后, 经下述步骤使其成为符合 上述网页二元组定义的网页 :
     S402, 过滤 HTML 页面中的 Javascript 代码和冗余标签 ;
     S404, 利用 HTML 页面在 DOM(Document Object Model) 树中的 DIV 块信息重新构 建 DIV 块 ; S406, 保留重新构建 DIV 块中的原子 DIV 块, 原子 DIV 块为除其本身之外不包含任 何其他 DIV 块的 DIV 块 ;
     S408, 对每个原子 DIV 块进行参数分析, 根据分析结果选取出包含网页正文的 DIV 块;
     S410, 如果原子 DIV 块与包含网页正文的 DIV 块间隔预定间隙且位于包含网页正 文的 DIV 块的正上方或正下方, 则确定与包含网页正文的 DIV 块间隔预定间隙且位于包含 网页正文的 DIV 块的正上方或正下方的 DIV 块为包含网页正文的 DIV 块 ;
     S412, 对包含网页正文的 DIV 块进行内容提取, 以获取网页正文。
     图 8 是本发明网页正文抽取方法的再一实施例的流程示意图。
     如图 8 所示, 该实施例可以包括以下步骤 :
     S502, 远程获取页面 ;
     S504, 过滤页面中的无关代码 ;
     S506, 从 HTML 代码的起始处开始直至结束处重新构建 DIV 块 ;
     S508, 计算每个 DIV 块的层次值 ;
     S510, 保留原子 DIV 块 ;
     S512, 获取 DIV 块的属性 ;
     S514, 过滤无效的非原子 DIV 块 ;
     S516, 对保留下的 DIV 块的参数进行分析 ;
     S518, 查找与包含网页正文的 DIV 块间隔预定间隙且位于包含网页正文的 DIV 块 的正上方或正下方的 DIV 块, 作为包含网页正文的 DIV 块 ;
     S520, 提取每个包含网页正文的 DIV 块的内容 ;
     S522, 将提取出的内容进行组合, 以获取完整的网页正文。
     图 9 是本发明抽取装置的一个实施例的结构示意图。
     如图 9 所示, 该实施例的抽取装置 10 可以包括 :
     DIV 块重构模块 11, 用于利用 HTML 页面在 DOM 树中的 DIV 块信息重新构建 DIV 块 ;
     原子 DIV 块保留模块 12, 与 DIV 块重构模块 11 相连, 用于保留重新构建 DIV 块中 的原子 DIV 块, 原子 DIV 块为除其本身之外不包含任何其他 DIV 块的 DIV 块 ;
     网页正文 DIV 块选取模块 13, 与原子 DIV 块保留模块 12 相连, 用于对每个原子 DIV 块进行参数分析, 根据分析结果选取出包含网页正文的 DIV 块 ;
     网页正文提取模块 14, 与网页正文 DIV 块选取模块 13 相连, 用于对包含网页正文 的 DIV 块进行内容提取, 以获取网页正文。
     该实施例针对流行的 DIV 网页布局, 基于网页实际视觉效果, 利用浏览器 DOM 树中 DIV 块的信息, 通过 DIV 块的重新构建、 保留原子 DIV 块以及 DIV 块的参数分析来实现网页 正文的抽取, 不仅有效去除了 HTML 网页中的噪音信息, 而且在很大程度上提高了从 HTML 网 页中获取正文信息的准确度。
     图 10 是本发明抽取装置的另一实施例的结构示意图。
     如图 10 所示, 与图 9 中的实施例相比, 该实施例的抽取装置 20 还包括 :
     网页正文 DIV 块确定模块 21, 分别与网页正文 DIV 块选取模块 13 和网页正文提取 模块 14 相连, 用于如果原子 DIV 块与包含网页正文的 DIV 块间隔预定间隙且位于包含网页 正文的 DIV 块的正上方或正下方, 则确定与包含网页正文的 DIV 块间隔预定间隙且位于包 含网页正文的 DIV 块的正上方或正下方的 DIV 块为包含网页正文的 DIV 块。
     该实施例与上述实施例相比, 由于考虑了多种页面设计格式, 从而使得网页正文 的提取准确率更高。
     图 11 是本发明抽取装置的又一实施例的结构示意图。
     如图 11 所示, 与图 9 中的实施例相比, 该实施例的抽取装置 30 中的 DIV 块重构模 块 31 包括 :
     第一非 DIV 代码段获取单元 311, 用于从 HTML 页面代码的起始处开始直至 HTML 页 面代码的结束处获取两个 DIV 块开始标签之间的非 DIV 代码段 ;
     第二非 DIV 代码段获取单元 312, 用于从 HTML 页面代码的起始处开始直至 HTML 页 面代码的结束处获取两个 DIV 块结束标签之间的非 DIV 代码段 ;
     标签添加单元 313, 分别与第一非 DIV 代码段获取单元 311 和第二非 DIV 代码段获 取单元 312 相连, 用于为获取的非 DIV 代码段补齐 DIV 块开始标签和 DIV 块结束标签。
     该实施例为网页中的每一段零散代码的两端都加上一对 DIV 标签, 以保证网页中 的各个独立区域都被一个 DIV 块所包含, 以保证网页正文的有效抽取。
     图 12 是本发明抽取装置的再一实施例的结构示意图。
     如图 12 所示, 与图 9 中的实施例相比, 该实施例的抽取装置 40 中的原子 DIV 块保 留模块 41 可以包括 :
     层次值计算单元 411, 用于在重新构建 DIV 块中计算出每个 DIV 块相对页面 BODY 标签的层次值 ;
     原子 DIV 块判断单元 412, 与层次值计算单元 411 相连, 用于根据计算出的层次值 判断每个 DIV 块是否为原子 DIV 块 ;
     非原子 DIV 块去除单元 413, 与原子 DIV 块判断单元 412 相连, 用于去除重新构建DIV 块中的非原子 DIV 块。
     该实施例能够避免网页中的 DIV 块被重复分析, 以提高分析效率。
     图 13 是本发明抽取装置的再一实施例的结构示意图。
     如图 13 所示, 与图 9 中的实施例相比, 该实施例的抽取装置 50 中的网页正文 DIV 块选取模块 51 包括 :
     第一查找单元 511, 用于从多个原子 DIV 块中查找出横向宽度大于预定宽度的原 子 DIV 块 ;
     第二查找单元 512, 与第一查找单元 511 相连, 用于从查找出的横向宽度大于预定 宽度的原子 DIV 块中找出面积最大的 DIV 块作为包含网页正文的 DIV 块。
     图 14 是本发明抽取装置的再一实施例的结构示意图。
     如图 14 所示, 与图 9 中的实施例相比, 该实施例的抽取装置 60 还包括 :
     无 用 信 息 过 滤 模 块 61, 与 DIV 块 重 构 模 块 11 相 连, 用 于 过 滤 HTML 页 面 中 的 Javascript 代码和冗余标签。
     该实施例由于引入无关代码过滤机制, 为网页正文抽取的后续步骤提供了简洁且 清晰的代码, 因此, 在很大程度上提高了网页正文的抽取效率。 本发明的上述实施例能够克服现有技术的不足, 可以应用于网页数据采集及挖掘 等信息处理领域, 实现算法简单、 直观、 而且具有较低的实现复杂度, 正文抽取精确率可以 高达 94%以上, 具有很高的通用性和精确性。
     此外, 本发明还可以应用于互联网的信息安全监控领域, 例如, 可以对城域网以及 IDC 托管服务器中的页面进行分析以保证信息的安全 ; 还可以用于用户行为分析, 例如, 可 以通过分析用户访问的页面内容了解用户的兴趣爱好, 还可以针对性地对用户进行广告投 放。
     虽然已经通过示例对本发明的一些特定实施例进行了详细说明, 但是本领域的技 术人员应该理解, 以上示例仅是为了进行说明, 而不是为了限制本发明的范围。 本领域的技 术人员应该理解, 可在不脱离本发明的范围和精神的情况下, 对以上实施例进行修改。 本发 明的范围由所附权利要求来限定。
    

基于DIV位置的网页正文抽取方法和装置.pdf_第1页
第1页 / 共20页
基于DIV位置的网页正文抽取方法和装置.pdf_第2页
第2页 / 共20页
基于DIV位置的网页正文抽取方法和装置.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《基于DIV位置的网页正文抽取方法和装置.pdf》由会员分享,可在线阅读,更多相关《基于DIV位置的网页正文抽取方法和装置.pdf(20页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102479181 A(43)申请公布日 2012.05.30CN102479181A*CN102479181A*(21)申请号 201010553327.3(22)申请日 2010.11.22G06F 17/30(2006.01)(71)申请人中国电信股份有限公司地址 100032 北京市西城区金融大街31号(72)发明人吴晔 刘勋华 谢亨骏 李辉遒郭玲 曹琳 万东 詹国强 刘舟李晓佳(74)专利代理机构中国国际贸易促进委员会专利商标事务所 11038代理人孙宝海(54) 发明名称基于DIV位置的网页正文抽取方法和装置(57) 摘要本发明公开了一种基于DIV位置的网。

2、页正文抽取方法和装置。其中,该方法包括利用HTML页面在DOM树中的DIV块信息重新构建DIV块;保留重新构建DIV块中的原子DIV块,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块;对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;对包含网页正文的DIV块进行内容提取,以获取网页正文。本发明能够防止同一DIV块被重复分析,从而提高了分析效率。同时,根据每个原子DIV块的参数来选取包含网页正文的DIV块,以有效去除HTML网页中的噪音信息,在很大程度上提高了从HTML网页中获取正文信息的准确度。(51)Int.Cl.权利要求书2页 说明书8页 附图9页(19。

3、)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 2 页 说明书 8 页 附图 9 页1/2页21.一种基于DIV位置的网页正文抽取方法,其特征在于,包括:利用HTML页面在DOM树中的DIV块信息重新构建DIV块;保留所述重新构建DIV块中的原子DIV块,所述原子DIV块为除其本身之外不包含任何其他DIV块的DIV块;对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;对所述包含网页正文的DIV块进行内容提取,以获取网页正文。2.根据权利要求1所述的方法,其特征在于,在对所述包含网页正文的DIV块进行内容提取之前,所述方法还包括:如果原子DIV块与所述包含网。

4、页正文的DIV块间隔预定间隙且位于所述包含网页正文的DIV块的正上方或正下方,则确定与所述包含网页正文的DIV块间隔预定间隙且位于所述包含网页正文的DIV块的正上方或正下方的DIV块为包含网页正文的DIV块。3.根据权利要求1所述的方法,其特征在于,所述利用HTML页面在DOM树中的DIV块信息重新构建DIV块的步骤包括:从所述HTML页面代码的起始处开始直至所述HTML页面代码的结束处获取两个DIV块开始标签之间的非DIV代码段;从所述HTML页面代码的起始处开始直至所述HTML页面代码的结束处获取两个DIV块结束标签之间的非DIV代码段;为获取的非DIV代码段补齐DIV块开始标签和DIV块。

5、结束标签。4.根据权利要求1所述的方法,其特征在于,保留所述重新构建DIV块中的原子DIV块的步骤包括:在所述重新构建DIV块中计算出每个DIV块相对页面BODY标签的层次值;根据计算出的层次值判断每个DIV块是否为所述原子DIV块;去除所述重新构建DIV块中的非原子DIV块。5.根据权利要求1所述的方法,其特征在于,对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块的步骤包括:从多个原子DIV块中查找出横向宽度大于预定宽度的原子DIV块;从查找出的横向宽度大于预定宽度的原子DIV块中找出面积最大的DIV块作为所述包含网页正文的DIV块。6.根据权利要求1所述的方法,其特。

6、征在于,在重新构建DIV块之前,所述方法还包括:过滤所述HTML页面中的Javascript代码和冗余标签。7.一种基于DIV位置的网页正文抽取装置,其特征在于,包括:DIV块重构模块,用于利用HTML页面在DOM树中的DIV块信息重新构建DIV块;原子DIV块保留模块,与所述DIV块重构模块相连,用于保留所述重新构建DIV块中的原子DIV块,所述原子DIV块为除其本身之外不包含任何其他DIV块的DIV块;网页正文DIV块选取模块,与所述原子DIV块保留模块相连,用于对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;网页正文提取模块,与所述网页正文DIV块选取模块相连,。

7、用于对所述包含网页正文的DIV块进行内容提取,以获取网页正文。权 利 要 求 书CN 102479181 A2/2页38.根据权利要求7所述的装置,其特征在于,所述装置还包括:网页正文DIV块确定模块,分别与所述网页正文DIV块选取模块和所述网页正文提取模块相连,用于如果原子DIV块与所述包含网页正文的DIV块间隔预定间隙且位于所述包含网页正文的DIV块的正上方或正下方,则确定与所述包含网页正文的DIV块间隔预定间隙且位于所述包含网页正文的DIV块的正上方或正下方的DIV块为包含网页正文的DIV块。9.根据权利要求7所述的装置,其特征在于,所述DIV块重构模块包括:第一非DIV代码段获取单元,。

8、用于从所述HTML页面代码的起始处开始直至所述HTML页面代码的结束处获取两个DIV块开始标签之间的非DIV代码段;第二非DIV代码段获取单元,用于从所述HTML页面代码的起始处开始直至所述HTML页面代码的结束处获取两个DIV块结束标签之间的非DIV代码段;标签添加单元,分别与所述第一非DIV代码段获取单元和所述第二非DIV代码段获取单元相连,用于为获取的非DIV代码段补齐DIV块开始标签和DIV块结束标签。10.根据权利要求7所述的装置,其特征在于,所述原子DIV块保留模块包括:层次值计算单元,用于在所述重新构建DIV块中计算出每个DIV块相对页面BODY标签的层次值;原子DIV块判断单元。

9、,与所述层次值计算单元相连,用于根据计算出的层次值判断每个DIV块是否为所述原子DIV块;非原子DIV块去除单元,与所述原子DIV块判断单元相连,用于去除所述重新构建DIV块中的非原子DIV块。11.根据权利要求7所述的装置,其特征在于,所述网页正文DIV块选取模块包括:第一查找单元,用于从多个原子DIV块中查找出横向宽度大于预定宽度的原子DIV块;第二查找单元,与所述第一查找单元相连,用于从查找出的横向宽度大于预定宽度的原子DIV块中找出面积最大的DIV块作为所述包含网页正文的DIV块。12.根据权利要求7所述的装置,其特征在于,所述装置还包括:无用信息过滤模块,与所述DIV块重构模块相连,。

10、用于过滤所述HTML页面中的Javascript代码和冗余标签。权 利 要 求 书CN 102479181 A1/8页4基于 DIV 位置的网页正文抽取方法和装置技术领域0001 本发明涉及信息采集与处理技术领域,特别地,涉及一种基于DIV(Division)位置的网页正文抽取方法和装置。背景技术0002 随着Internet及其技术的迅速发展,在Web上已经形成不计其数以HTML(Hyper Text Mark-up Language)形式存在的网页信息。但是,Web页面通常含有很多用户并不关心的信息,例如,广告、导航链接等噪音信息,它们分布在网页正文的四周,有的甚至嵌入到网页正文中。这些噪。

11、音信息给信息搜索、数据挖掘、机器翻译和文本摘要等信息研究带来诸多困难。因此,如何准确地从Web网页中提取正文信息,已经成为目前噬待解决的技术问题。发明内容0003 本发明要解决的一个技术问题是提供一种基于DIV位置的网页正文抽取方法和装置,能够去除HTML网页中的噪音信息以准确地从HTML网页中提取正文信息。0004 根据本发明的一方面,提出了一种基于DIV位置的网页正文抽取方法,包括利用HTML页面在DOM(Document Object Model)树中的DIV块信息重新构建DIV块;保留重新构建DIV块中的原子DIV块,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块;对每个原。

12、子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;对包含网页正文的DIV块进行内容提取,以获取网页正文。0005 根据本发明抽取方法的一个实施例,在对包含网页正文的DIV块进行内容提取之前,该方法还包括如果原子DIV块与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方,则确定与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方的DIV块为包含网页正文的DIV块。0006 根据本发明抽取方法的另一实施例,利用HTML页面在DOM树中的DIV块信息重新构建DIV块的步骤包括从HTML页面代码的起始处开始直至HTML页面代码的。

13、结束处获取两个DIV块开始标签之间的非DIV代码段;从HTML页面代码的起始处开始直至HTML页面代码的结束处获取两个DIV块结束标签之间的非DIV代码段;为获取的非DIV代码段补齐DIV块开始标签和DIV块结束标签。0007 根据本发明抽取方法的又一实施例,保留重新构建DIV块中的原子DIV块的步骤包括在重新构建DIV块中计算出每个DIV块相对页面BODY标签的层次值;根据计算出的层次值判断每个DIV块是否为原子DIV块;去除重新构建DIV块中的非原子DIV块。0008 根据本发明抽取方法的再一实施例,对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块的步骤包括从多个原。

14、子DIV块中查找出横向宽度大于预定宽度的原子DIV块;从查找出的横向宽度大于预定宽度的原子DIV块中找出面积最大的DIV块作为包含网页正文的DIV块。0009 根据本发明抽取方法的再一实施例,在重新构建DIV块之前,该方法还包括过滤说 明 书CN 102479181 A2/8页5HTML页面中的Javascript代码和冗余标签。0010 根据本发明的另一方面,还提出了一种基于DIV位置的网页正文抽取装置,包括DIV块重构模块,用于利用HTML页面在DOM树中的DIV块信息重新构建DIV块;原子DIV块保留模块,与DIV块重构模块相连,用于保留重新构建DIV块中的原子DIV块,原子DIV块为除。

15、其本身之外不包含任何其他DIV块的DIV块;网页正文DIV块选取模块,与原子DIV块保留模块相连,用于对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;网页正文提取模块,与网页正文DIV块选取模块相连,用于对包含网页正文的DIV块进行内容提取,以获取网页正文。0011 根据本发明抽取装置的一个实施例,该装置还包括网页正文DIV块确定模块,分别与网页正文DIV块选取模块和网页正文提取模块相连,用于如果原子DIV块与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方,则确定与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或。

16、正下方的DIV块为包含网页正文的DIV块。0012 根据本发明抽取装置的另一实施例,DIV块重构模块包括第一非DIV代码段获取单元,用于从HTML页面代码的起始处开始直至HTML页面代码的结束处获取两个DIV块开始标签之间的非DIV代码段;第二非DIV代码段获取单元,用于从HTML页面代码的起始处开始直至HTML页面代码的结束处获取两个DIV块结束标签之间的非DIV代码段;标签添加单元,分别与第一非DIV代码段获取单元和第二非DIV代码段获取单元相连,用于为获取的非DIV代码段补齐DIV块开始标签和DIV块结束标签。0013 根据本发明抽取装置的又一实施例,原子DIV块保留模块包括层次值计算单。

17、元,用于在重新构建DIV块中计算出每个DIV块相对页面BODY标签的层次值;原子DIV块判断单元,与层次值计算单元相连,用于根据计算出的层次值判断每个DIV块是否为原子DIV块;非原子DIV块去除单元,与原子DIV块判断单元相连,用于去除重新构建DIV块中的非原子DIV块。0014 根据本发明抽取装置的再一实施例,网页正文DIV块选取模块包括第一查找单元,用于从多个原子DIV块中查找出横向宽度大于预定宽度的原子DIV块;第二查找单元,与第一查找单元相连,用于从查找出的横向宽度大于预定宽度的原子DIV块中找出面积最大的DIV块作为包含网页正文的DIV块。0015 根据本发明抽取装置的再一实施例,。

18、该装置还包括无用信息过滤模块,与DIV块重构模块相连,用于过滤HTML页面中的Javascript代码和冗余标签。0016 本发明提供的基于DIV位置的网页正文抽取方法和装置,利用DOM树中的DIV块信息重新构建DIV块,并且保留原子DIV块,以防止同一DIV块被重复分析,从而提高了分析效率。同时,根据每个原子DIV块的参数来选取包含网页正文的DIV块,以有效去除HTML网页中的噪音信息,在很大程度上提高了从HTML网页中获取正文信息的准确度。附图说明0017 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分。在附图中:0018 图1是本发明网页正文抽取方法的一个实施例的流程示。

19、意图。说 明 书CN 102479181 A3/8页60019 图2是本发明实施例重新构建DIV块的示意图。0020 图3是本发明实施例保留原子DIV块的示意图。0021 图4是本发明实施例计算预定宽度的示意图。0022 图5是本发明网页正文抽取方法的另一实施例的流程示意图。0023 图6是本发明网页正文抽取方法的又一实施例的流程示意图。0024 图7是本发明网页正文抽取方法的再一实施例的流程示意图。0025 图8是本发明网页正文抽取方法的再一实施例的流程示意图。0026 图9是本发明抽取装置的一个实施例的结构示意图。0027 图10是本发明抽取装置的另一实施例的结构示意图。0028 图11是。

20、本发明抽取装置的又一实施例的结构示意图。0029 图12是本发明抽取装置的再一实施例的结构示意图。0030 图13是本发明抽取装置的再一实施例的结构示意图。0031 图14是本发明抽取装置的再一实施例的结构示意图。具体实施方式0032 下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。本发明的示例性实施例及其说明用于解释本发明,但并不构成对本发明的不当限定。0033 以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。0034 本发明的目的在于提供一种基于DIV位置的网页正文抽取方法和装置,能够解决基于DIV布局的网页正文抽取问题。。

21、0035 为了实现本发明的目的,引入了原子DIV块的概念:原子DIV块就是没有包含其它DIV块的DIV块。因此,可以将HTML页面定义为一个二元组(,),其中,表示给定页面上的所有原子DIV块的集合,(1,2,T)则定义了各个DIV块的排版属性,其中,可以包括DIV块四条边在页面中的绝对坐标值(即,xy坐标的坐标值)、DIV块的宽度和高度(例如,可以通过递归计算获得网页中DIV块的绝对坐标值和宽度与高度值)。为了使HTML页面符合上述定义,需要对页面的DIV块进行重新构建,并根据构建后的DIV块的位置关系,只保留原子DIV块,使页面上的DIV块在位置上不存在包含与重叠关系。对于一个符合上述定义。

22、的二元组的页面,对DIV块进行结构和位置分析,定位位于网页中位置最重要的DIV块,并抽取出网页正文。可选地,还可以通过扩展算法使正文抽取的准确率更高。0036 图1是本发明网页正文抽取方法的一个实施例的流程示意图。0037 如图1所示,该实施例可以包括以下步骤:0038 S102,由于HTML页面在浏览器中是由DOM进行描述的,DOM中包含许多可以用于分析和模式匹配的有效信息,在DIV布局的网页中,DOM模型由多个DIV块组成,DIV块作为一个容器,可以用来存放页面的文字和图片信息,网页正文就存在DIV块之中,同时,在网页正文的四周还可能分布着各种噪音信息,因此,可以利用HTML页面在DOM树。

23、中的DIV块信息对HTML页面重新构建DIV块,从而为网页中的每一段零散代码的两端都加上一对DIV标签,以保证网页中的各个独立区域都被一个DIV块所包含;说 明 书CN 102479181 A4/8页70039 举例说明,可以从HTML页面代码的起始处开始直至HTML页面代码的结束处获取两个DIV块开始标签之间的非DIV代码段;例如,可以使用正则表达式,从网页代码中获取所有包含在两个DIV开始标签之间,且不包含标签的代码;0040 从HTML页面代码的起始处开始直至HTML页面代码的结束处获取两个DIV块结束标签之间的非DIV代码段;例如,可以获取所有包含在两个DIV开始标签之间,且不包含标签。

24、的代码;0041 为获取的非DIV代码段补齐DIV块开始标签和DIV块结束标签;即,为找到的每一个代码段的两端分别加上一对DIV标签,使其被包含在一个DIV块中。0042 图2是本发明实施例重新构建DIV块的示意图。0043 如图2所示,左侧为重新构建前的HTML页面,右侧为重新构建后的HTML页面,在构建过程中,为两个非DIV代码段分别添加了DIV块的开始标签和结束标签。0044 S104,每个DIV块的排版属性由外部的层叠样式表(CascadingStyle Sheets,CSS)进行定义和控制,通常情况下,网页上的DIV块在位置上存在很多包含关系,甚至重叠关系,这样就会造成DIV块被重复。

25、分析,从而降低了分析的效率,因此,为了使页面中的DIV块彼此之间在位置上不存在包含和重叠关系以防止被重复分析,可以去除重新构建DIV块中的非原子DIV块,保留其中的原子DIV块,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块(如图2中的DIV块E、F、G或H),从而实现页面中的DIV块在位置上都彼此独立,不存在包含和覆盖关系,使DIV块符合步骤S106分析的需要,并且还可以避免DIV块被重复分析,以提高分析效率;0045 举例说明,可以在重新构建DIV块中计算出每个DIV块相对页面BODY标签的层次值;根据计算出的层次值判断每个DIV块是否为原子DIV块;去除重新构建DIV块中的非。

26、原子DIV块;0046 继续以图2为例进行说明,为了使页面中的DIV彼此之间在位置上没有存在包含和覆盖关系,重新构建后的各DIV块(包括DIV块AH)的属性值发生了变化,可以重新从DOM树中计算出各个DIV块相对页面BODY标签的层次值。通过观察层次值可以很清晰地判断出一个DIV块是否包含有其他DIV块。在图2中,从最外层DIV开始,按自上而下的顺序(即,DIV块从A-B-C-E-G-F-H-D的顺序),DIV块的层次值依次为1-2-2-3-3-3-3-2。从层次值序列可以看出,DIV块A和DIV块C由于其右边元素的层次值大于其自身的层次值,所以它们里面还包含有其他DIV块,故作为非原子DIV。

27、块不予保留。经上述处理之后,各个DIV块的层次值都已全部变为1,即,均成为原子DIV块。其变化过程如图3所示。0047 S106,对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;0048 从大量网页的统计分析数据可以看出,包含网页正文的DIV块一般符合下述两个条件:(1)在横向方向上,其横跨所有原子DIV块覆盖区域的一半以上;(2)在面积上,其面积是所有原子DIV块中面积最大的。具体地,可以循环取出每个原子DIV块,分别验证每个DIV块是否符合上述条件(1),若符合,则将其放置到一个数组A中,遍历完毕后,对数组A中的DIV块再按照面积从大到小的顺序进行排序,取出面积最。

28、大的DIV块,并放入数组B中。说 明 书CN 102479181 A5/8页80049 举例说明,可以从所有原子DIV块中查找出横向宽度大于预定宽度的原子DIV块;其中,预定宽度可以是覆盖HTML页面中所有原子DIV块宽度的长度的一半,换句话说,如果在HTML页面中建立xy坐标轴,以左下脚为坐标原点,覆盖HTML页面中所有原子DIV块宽度的长度Max_Width就是最左侧的原子DIV块的左侧边的x轴坐标值与最右侧的原子DIV块的右侧边的x轴坐标值之差,如图4所示;0050 从查找出的横向宽度大于预定宽度的原子DIV块中找出面积最大的DIV块作为包含网页正文的DIV块。0051 S108,对包含。

29、网页正文的DIV块进行内容提取,以获取网页正文。0052 该实施例利用DOM树中的DIV块信息重新构建DIV块,并且保留原子DIV块,以防止同一DIV块被重复分析,从而提高了分析效率。同时,根据每个原子DIV块的参数来选取包含网页正文的DIV块,以有效去除HTML网页中的噪音信息,在很大程度上提高了从HTML网页中获取正文信息的准确度。0053 图5是本发明网页正文抽取方法的另一实施例的流程示意图。0054 如图5所示,该实施例可以包括以下步骤:0055 S202,利用HTML页面在DOM树中的DIV块信息重新构建DIV块,即,将页面中的DIV块完整化和标准化。0056 S204,保留重新构建。

30、DIV块中的原子DIV块,以消除页面中DIV块之间的包含与重叠关系,其中,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块。0057 S206,对每个原子DIV块进行参数(例如,宽度和面积)分析,根据分析结果选取出包含网页正文的DIV块,以实现对包含网页正文DIV块的定位。0058 S208,如果原子DIV块与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方,则确定与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方的DIV块为包含网页正文的DIV块;0059 举例说明,如果网页正文都集中存放在一个大的DIV块中,那么上述实施。

31、例的数组B中包含的就是网页正文的DIV块,然而,还有很多网页是以多个宽度相同的DIV块进行纵向布局的,彼此之间有一定的间隙,因此,为了使网页正文的抽取准确率更高,可以设定一个间隙阀值T,先从数组A中取出一个DIV块,如果该DIV块与数组B中的DIV块在坐标轴上处于上下关系,即,位于正上方间隔T处或者正下方间隔T处(例如,可以通过两个DIV块的相邻边的y轴坐标的差值与T判断),则可以将该DIV块加入数组B,否则丢弃。如此循环直到数组A为空。此时,数组B中的元素就是包含网页正文DIV块集合,对这些DIV块中的内容(可以是文字信息或图片信息)进行提取,组合之后即可获取网页正文。0060 S210,对。

32、包含网页正文的DIV块进行内容提取,以获取网页正文。0061 该实施例与上述实施例相比,由于考虑了多种页面设计格式,从而使得网页正文的提取准确率更高。0062 图6是本发明网页正文抽取方法的又一实施例的流程示意图。0063 如图6所示,该实施例可以包括以下步骤:0064 S302,过滤HTML页面中的无关代码,例如,Javascript代码和冗余标签;0065 在HTML页面代码中,除了包含用户可见的页面内容外,一般还包含一些诸如Javascript代码和冗余标签等用户并不关心的内容,为了得出一个结构代码较为简洁的页说 明 书CN 102479181 A6/8页9面,可以先对上述代码进行过滤。。

33、0066 S304,利用HTML页面在DOM(Document Object Model)树中的DIV块信息重新构建DIV块。0067 S306,保留重新构建DIV块中的原子DIV块,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块。0068 S308,对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块。0069 S310,对包含网页正文的DIV块进行内容提取,以获取网页正文。0070 该实施例与上述实施例相比,由于引入无关代码过滤机制,为网页正文抽取的后续步骤提供了简洁且清晰的代码,因此,在很大程度上提高了网页正文的抽取效率。0071 图7是本发明网页正文抽取。

34、方法的再一实施例的流程示意图。0072 如图7所示,在远程获取一个HTML页面的源代码之后,经下述步骤使其成为符合上述网页二元组定义的网页:0073 S402,过滤HTML页面中的Javascript代码和冗余标签;0074 S404,利用HTML页面在DOM(Document Object Model)树中的DIV块信息重新构建DIV块;0075 S406,保留重新构建DIV块中的原子DIV块,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块;0076 S408,对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;0077 S410,如果原子DIV块与包含网页。

35、正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方,则确定与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方的DIV块为包含网页正文的DIV块;0078 S412,对包含网页正文的DIV块进行内容提取,以获取网页正文。0079 图8是本发明网页正文抽取方法的再一实施例的流程示意图。0080 如图8所示,该实施例可以包括以下步骤:0081 S502,远程获取页面;0082 S504,过滤页面中的无关代码;0083 S506,从HTML代码的起始处开始直至结束处重新构建DIV块;0084 S508,计算每个DIV块的层次值;0085 S510,保留。

36、原子DIV块;0086 S512,获取DIV块的属性;0087 S514,过滤无效的非原子DIV块;0088 S516,对保留下的DIV块的参数进行分析;0089 S518,查找与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方的DIV块,作为包含网页正文的DIV块;0090 S520,提取每个包含网页正文的DIV块的内容;0091 S522,将提取出的内容进行组合,以获取完整的网页正文。0092 图9是本发明抽取装置的一个实施例的结构示意图。说 明 书CN 102479181 A7/8页100093 如图9所示,该实施例的抽取装置10可以包括:0094 DIV块。

37、重构模块11,用于利用HTML页面在DOM树中的DIV块信息重新构建DIV块;0095 原子DIV块保留模块12,与DIV块重构模块11相连,用于保留重新构建DIV块中的原子DIV块,原子DIV块为除其本身之外不包含任何其他DIV块的DIV块;0096 网页正文DIV块选取模块13,与原子DIV块保留模块12相连,用于对每个原子DIV块进行参数分析,根据分析结果选取出包含网页正文的DIV块;0097 网页正文提取模块14,与网页正文DIV块选取模块13相连,用于对包含网页正文的DIV块进行内容提取,以获取网页正文。0098 该实施例针对流行的DIV网页布局,基于网页实际视觉效果,利用浏览器DO。

38、M树中DIV块的信息,通过DIV块的重新构建、保留原子DIV块以及DIV块的参数分析来实现网页正文的抽取,不仅有效去除了HTML网页中的噪音信息,而且在很大程度上提高了从HTML网页中获取正文信息的准确度。0099 图10是本发明抽取装置的另一实施例的结构示意图。0100 如图10所示,与图9中的实施例相比,该实施例的抽取装置20还包括:0101 网页正文DIV块确定模块21,分别与网页正文DIV块选取模块13和网页正文提取模块14相连,用于如果原子DIV块与包含网页正文的DIV块间隔预定间隙且位于包含网页正文的DIV块的正上方或正下方,则确定与包含网页正文的DIV块间隔预定间隙且位于包含网页。

39、正文的DIV块的正上方或正下方的DIV块为包含网页正文的DIV块。0102 该实施例与上述实施例相比,由于考虑了多种页面设计格式,从而使得网页正文的提取准确率更高。0103 图11是本发明抽取装置的又一实施例的结构示意图。0104 如图11所示,与图9中的实施例相比,该实施例的抽取装置30中的DIV块重构模块31包括:0105 第一非DIV代码段获取单元311,用于从HTML页面代码的起始处开始直至HTML页面代码的结束处获取两个DIV块开始标签之间的非DIV代码段;0106 第二非DIV代码段获取单元312,用于从HTML页面代码的起始处开始直至HTML页面代码的结束处获取两个DIV块结束标。

40、签之间的非DIV代码段;0107 标签添加单元313,分别与第一非DIV代码段获取单元311和第二非DIV代码段获取单元312相连,用于为获取的非DIV代码段补齐DIV块开始标签和DIV块结束标签。0108 该实施例为网页中的每一段零散代码的两端都加上一对DIV标签,以保证网页中的各个独立区域都被一个DIV块所包含,以保证网页正文的有效抽取。0109 图12是本发明抽取装置的再一实施例的结构示意图。0110 如图12所示,与图9中的实施例相比,该实施例的抽取装置40中的原子DIV块保留模块41可以包括:0111 层次值计算单元411,用于在重新构建DIV块中计算出每个DIV块相对页面BODY标签的层次值;0112 原子DIV块判断单元412,与层次值计算单元411相连,用于根据计算出的层次值判断每个DIV块是否为原子DIV块;0113 非原子DIV块去除单元413,与原子DIV块判断单元412相连,用于去除重新构建说 明 书CN 102479181 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1