第5章Web页面逻辑链接块研究 链接块是Web页面中广泛存在的一种区块结构。在现有的涉及链接块的相关研究和应用中,存在两类主要问题: 一是仅针对物理结构上的链接块,甚至仅针对Block级别的HTML元素链接块; 二是链接块的发现与识别等处理都是建立在Web页面标签树的基础之上,这一方面影响了Web页面的处理速度,另外也无法应付当前互联网上多样化而又不规范的Web页面。针对目前相关方法的不足,本章提出逻辑链接块的概念和逻辑链接块的发现方法和判别方法。该方法无须解析网页标签树或者DOM[62] 树,相关处理程序健壮性大幅度提高,且不再受限于某些特定的Block层次的链接块,既可以处理Block层次的链接块,也可以处理Inline层次的链接块,而且还可以处理跨越块级元素的链接块。实验结果表明: 本章提出的方法可以有效地发现页面中的逻辑链接块,判别规则简单,为链接块的识别及文本提取提供了一种新的方式,在对链接块粒度要求不高的场合具有广泛的应用前景,在其他Web信息处理和挖掘领域中也具有一定的实际应用价值。 5.1引言 万维网是一个通过页面之间的链接构建起来的超大型复杂网络。链接在Web信息组织和展示、页面导航等方面发挥着巨大的作用。网络爬虫依靠Web页面之间的链接实现互联网的遍历爬行,互联网用户则正是依靠页面之间的链接实现同主题内容的“聚合”阅读。Web页面中的链接往往以不同的粒度块来组织,粒度块越精细则所含链接的主题相关性越高; 随着粒度块的增大,链接块的主题“内聚”性逐渐减弱。如图51所示,当粒度要求极其精细时,则其将被划分为三个链接块; 而当精细度要求不高时,则可以将其视为一个链接块,整个链接块的用途即“导航”。在针对链接块的相关研究中,根据研究目的不同,对链接块的粒度精细要求也将不同。在专门针对链接块进行分析的研究中,对链接块粒度的要求往往较为精细,而在其他非链接块研究中,如Web页面文本提取中,则对链接块的粒度要求不高。 图51链接块的粒度 在技术实现上,视觉上的分块往往也对应着块(block)级标签元素(blocklevel elements)[63],目前的涉及链接块的应用和研究基本仅针对该实现方式。然而,由于网页设计技术和实现的多样性,视觉上的分块,在实现方式上并不总是采用Block类型标签实现,也有可能采用内联类型标签(inline elements)[63]实现,这也就意味着无法准确地预知设计者使用何种方式实现链接块,或者需要建立在对HTML标签属性的精细解析基础之上,这给基于海量Web数据的一些自动化应用带来了诸多麻烦。 5.2相关研究及存在的问题 Web页面链接块的研究历史悠久,对Web页面进行分块或者信息提取的方法众多。文献[64]将Web页面的抽取方法总结为基于Wrapper、模板、机器学习、视觉布局特征、HTML特征等五类。这五类方法同样可以适用于Web页面链接块的分块。其中,Wrapper和模板法的通用性较差,且一般需要人工参与,并需要更新维护,极为耗时费力,鉴于此有研究人员提出了无须模板支持或人工监督的Wrapper算法[6567] ,并取得了较好的效果; 机器学习的方法需要借助合适的训练集和适量的特征[68] ,且难以完全脱离人工监督; 利用视觉布局特征的方法的典型代表即VIPS[69] ,该方法虽然准确率高,但是对网页的解析要求过于精细,计算消耗大,面对大量非规范化的网页时健壮性难以保证,且在当前普遍采用CSS[70] 来控制各页面标签属性视觉呈现的情况下,还需要另行解析相关CSS,最终导致解析任务量大,程序健壮性欠缺; 基于HTML特征的相关方法多偏向一些启发式规则[7174] 或一些统计规律,通用性有待提高。此外,也有研究者提出了其他的一些方法,例如,利用模糊神经网络实现页面分块的方法[75] 、MSS页面分块方法[76] 等。虽然相关研究方法多种多样,各有特点,然而经过分析总结可以发现: 目前关于Web页面链接块的发现和识别相关算法基本都是基于标签树[73, 7781] ,而DOM[82] 是一种构建标签树最为常见的方式; 其他方法则都以HTML标签树或DOM为基础[8384] 。 另外,在对Web页面进行分块的相关研究中,有相当一部分基本都仅仅针对块级层次的HTML标签元素,如div、table、tr、td等,其中由于table功能的多样性和强劲性[85] ,早期网页布局修饰和内容组织几乎对table不可或缺,相应的,部分文献也仅考虑了针对table布局的网页[81] ,且未能很好地区分用于布局的table和用于内容组织的table。Son等[81]专门研究了基于table设计的网页,对table的两种作用做了区分并分别识别,实验证明了所提出方法的先进性。但仅针对table的处理方式局限性太大,目前的网页设计基本都是table和div共存,Uzun等[77] 同时考虑了这两种情况,先根据div和td获得分块信息,其次结合决策树生成抽取规则,取得了良好的效果,特别是在抽取速度上获得了和手工规则相当的性能; Wang等[71] 则提出了BSU概念,并基于此采用聚类和启发式规则两种方法实现页面信息抽取,比采用基于div和table的方法结果更好。 现有的对链接块进行分块的算法,尤其是基于标签树的各种方法需要Web页面遵从较好的规范,这种规范既包括HTML、XHTML等标签语法规范(如标签的配对关系),也包括语义设计方面的规范(如通过浏览器渲染后在视觉上呈现块状的内容在实际的代码中也会通过块级元素div、table等来呈现,视觉上的标题通过h1、h2等标签来呈现等)。但实际上,海量的Web页面中,有相当数量的Web页面并不遵从HTML等标签语法规范和语义设计规范。虽然HTML标签语法上的不规范性可以通过一些现有的或自行设计的Web页面规范化程序进行矫正,但并不能保证100%的正确率; 语义设计规范问题的矫正难度则更大。这就决定了基于标签树的各种方法仅能在设计规范或易于矫正的Web页面中获得良好的效果,在非规范化Web页面中则显得捉襟见肘。 由于在已有的Web页面处理相关研究中,一般只将块级标签对应的代码块称为块,这种处理方式虽然极大地提高了诸多Web页面处理的效果。然而在面对纷繁复杂的Web页面时,在某些情况下,这种处理方式可能带来两种后果: 误判或无法检出。例如在很多Web页面中,存在着并非块级的广告,在页面正文抽取等研究领域,按传统的块级处理方式,无法检出这些广告链接,如图52所示。 图52非块级的嵌入式广告链接 本章基于现有链接块识别方法的不足,提出标签距离和逻辑链接块的概念,并基于标签距离提出了逻辑链接块的发现和判别方法,并实现逻辑链接块的识别和判别。逻辑链接块的识别在对链接块精细力度要求不高的场合具有良好的应用场景。 5.3方法及原理 为了后文表述方便,首先定义如下概念。 在Web页面的HTML代码中,两个标签之间存在着两类距离: 代码距离和文本距离。分别定义如下。 代码距离: 任意两个标签之间的代码距离即介于前一个标签的标签结束符“>”和后一个标签的标签开始符“<”之间所有内容的长度。在本章的计算中,将先去除各标签的属性然后才执行代码距离的计算,例如,“