如何从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树结构, 也可以使用一些开源的项目做到这一点, 例如: HtmlCleanerhttp://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页面内容和形式,想要找到一种通用的抽取技术,就目前的计算机技术来讲还是很困难的,这涉及到自然语言分析、神经网络、规则发现和数据挖掘等等领域。但是我们可以把各种页面进行分类,然后分别的寻找最佳策略,这种指导思想可以在实际应用中获取到性价比最高的整体解决方案。

以上是我在开发大有网(http://www.dayoou.com)遇到的问题,和大家分享。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值