如何从Web页面中获取结构化列表内容

传统搜索引擎的设计中,有效内容抽取是一个非常重要的技术目标。例如:网络爬虫在爬行时需要抽取有效的链接,并进行分析,以便对目标网站进行深度或广度的内容抓取; 更为普遍的应用场景是数据索引时,需要从数据中剔除干扰内容,而只保留主要内容进行索引,否则会严重影响搜索的准确性。
而在实时搜索引擎中,对内容抽取技术更加依赖,也提出了更加多的要求。相比于传统搜索引擎,其最大的特点在于实时性,这就要求在数据抓取和索引过程中不能进行过于耗时的计算。大有网其实就是一个披了阅读外衣的实时搜索引擎,因此在设计之初就着重考虑了内容抽取技术的实现。
目前在WEB数据的内容抽取领域,大致包括以下几种技术:
1) 基于规则的内容抽取;
2) 基于统计学/神经网络技术的自动抽取规则挖掘;
3) 基于封装器的半自动化内容抽取;
4) 视觉抽取;
经过研究、分析、以及在实际中的应用,发现这些技术或多或少的存在一些弊端,不能适用于全部抽取情景,很显然,它们也不是银弹。因此我们决定根据web页面的特征,划分成不同的类型, 再根据不同类型采取不同的抽取策略,逻辑解构如下(附件图片“分类抽取结构”):

分类抽取结构
下面重点说一说列表抽取器的设计思路.
一个WEB页面通常不仅仅包含主要的内容, 还包含很多额外添加的内容, 比如广告、导航条、辅助内容、页脚链接等。这些附加的内容对一个人类浏览者来说,并不是一个严重的问题,人脑可以很容易的分辨出来哪一部分是主要内容,哪一部分是次要内容。而对于计算机程序来说,这就是一个很严重的问题,过多的干扰信息的存在,会极大的影响抽取的准确性。我们可以看一个典型的WEB列表页面(附件图片“典型的列表页面”):


典型的列表页面
这个页面中, 只有红色框中的部分是有效内容, 其他部分都是附加信息,对于抽取程序来说,这个部分就是干扰信息。
列表页面具备这样一些特征,这也是我们对于列表页面的判定依据:
1) 在列表页中,列表部分的内容比重要偏大;
2) 列表条目的结构的形式基本一致, 并且条目的内容长度较为平均;
3) 列表条目的数量基本在一个限定的范围内,比如5-10n;
4) 列表条目在结构上都在同一个容器中;
5) 列表条目中很有可能同时包含图片、链接、文字;
有了上面的一些事实依据,列表抽取转化成了另一项任务:在一个WEB页面中根据特征的限定寻找最为匹配的结构。具体实现如下:
1. 预处理: 将目标WEB页面整理成标准的DOM结构
互联网上的web页面很大一部分存在结构问题,不能直接解析成DOM文档。因此需要整理, 并在整理过程中清理掉毫无用处的一些标签, 包括script、style、link、meta、iframe等,这样处理后, 我们会得到一个标准的、最简的DOM树结构。我们可以使用JavaCC来自定义个解析器来拾取HTML树结构, 也可以使用一些开源的项目做到这一点, 例如: HtmlCleaner http://htmlcleaner.sourceforge.net/.
2. 计算: 节点特征值
从根节点开始, 按照一定的规则进行遍历, 并分别计算节点的特征值, 这些特征值包括: 子节点内容均衡度(R)、有效子节点数量(C)、有效子节点平均长度(V)等。R的计算公式为:R = 100 * CLV / LS, 其中 CLV是子节点内容长度的线性方差; LS是当前节点的内容长度.
3. 排序: 选取最优的列表结构
把上一步计算的结果, 按照一定规则进行排序, 选取最优的列表结构。
4. 生成抽取规则
一旦得到最优的列表结构后, 就可以利用一定的算法进行规则发现和生成. 在这里使用的是diff比较算法, 这种算法被普遍使用在文本差异比较上, 我们发现也适用适用于格式化的DOM结构(XML)的比较. 根据差异即可获得结构中变化的部分, 也就很容易生成抽取规则了.
5. 结果: 只包含有效数据
下面的内容是系统产生的结果:
>>> http://file11.mafengwo.net/M00/11/84/....w195.jpeg
>>> /i/723612.html
>>> 大熊小猫玩转全球之【马尔代夫:那片海,美
------------------------------------------------------
>>> http://file2.mafengwo.net/M00/63/0E/....o.w195.jpeg
>>> /i/697060.html
>>> Art of doing nothing(无所事事的艺术)—
------------------------------------------------------
>>> http://file2.mafengwo.net/M00/5C/F6/.....w195.jpeg
>>> /i/511348.html
>>> 去马尔代夫,航班很重要,各个比较一下
------------------------------------------------------
....
可以看到, 主抽取了有效的数据. 在实际应用中, 还需要根据情况增加一些规则,用于过滤产生的内容.
6. 总结: 分而治之
面对互联网上各种各样、花样繁多的web页面内容和形式,想要找到一种通用的抽取技术,就目前的计算机技术来讲还是很困难的,这涉及到自然语言分析、神经网络、规则发现和数据挖掘等等领域。但是我们可以把各种页面进行分类,然后分别的寻找最佳策略,这种指导思想可以在实际应用中获取到性价比最高的整体解决方案。

猜你喜欢

转载自dayoouu.iteye.com/blog/1743253