传统搜索引擎的设计中,有效内容抽取是一个非常重要的技术目标。例如:网络爬虫在爬行时需要抽取有效的链接,并进行分析,以便对目标网站进行深度或广度的内容抓取; 更为普遍的应用场景是数据索引时,需要从数据中剔除干扰内容,而只保留主要内容进行索引,否则会严重影响搜索的准确性。
而在实时搜索引擎中,对内容抽取技术更加依赖,也提出了更加多的要求。相比于传统搜索引擎,其最大的特点在于实时性,这就要求在数据抓取和索引过程中不能进行过于耗时的计算。大有网其实就是一个披了阅读外衣的实时搜索引擎,因此在设计之初就着重考虑了内容抽取技术的实现。
目前在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页面内容和形式,想要找到一种通用的抽取技术,就目前的计算机技术来讲还是很困难的,这涉及到自然语言分析、神经网络、规则发现和数据挖掘等等领域。但是我们可以把各种页面进行分类,然后分别的寻找最佳策略,这种指导思想可以在实际应用中获取到性价比最高的整体解决方案。
- 大小: 105.2 KB
- 大小: 33.9 KB
分享到:
相关推荐
本主题主要关注如何通过纯前端技术实现Web页面的多语言切换,让内容能够以用户所在区域的语言显示。 首先,我们需要理解“国际化”不仅仅涉及翻译文本,它还包括日期、时间、数字格式、货币符号等方面的本地化处理...
文章首先介绍了Web挖掘的重要性和其在现代信息技术中的应用背景,然后具体分析了Web上的信息资源特点,以及在数据挖掘过程中遇到的数据结构异构性和半结构化数据问题。 在Web挖掘的数据结构问题部分,文中指出Web...
在WEB页面制作中,页面结构形式是非常重要的。以下是一些常见的页面结构形式: * FRAME 框架:FRAME 框架是一种常用的页面结构形式,通过使用FRAME 框架,可以实现页面的分离和复用。 * TEMPLATES 模板:TEMPLATES ...
3. **JavaScript**: 虽然在文件名称列表中没有明确提到JavaScript,但在大数据可视化中,JavaScript通常用于处理动态交互和数据绑定。可能在`js`文件夹内包含JavaScript代码,用于处理数据加载、图表绘制、用户交互...
在标题和描述中提到的“打开Web页面完成再网页修改内容”以及“动态修改网页内容”,主要指的是在网页加载完成后,通过JavaScript或其他前端技术对网页元素进行实时更新和修改的能力。 首先,我们需要理解Web页面的...
在IT行业中,页面获取Grid中的数据是一个常见的任务,特别是在开发数据驱动的应用程序时。Grid通常是一种用户界面元素,用于展示和操作大量结构化的数据。在本篇博文中,我们将探讨如何从网页或Web应用程序的Grid...
在IT领域,"WEB页面获取电子秤串口信息.zip.zip" 这个文件名暗示了一个技术应用场景,即通过Web页面实时获取连接到同一设备网络中的电子秤的串口数据。这个过程涉及到网络通信、Web开发、串行通信协议以及可能的硬件...
3. **数据抓取(Web Scraping)**:通过WebBrowser控件,开发者可以实现简单的Web Scraping,即从网页抓取结构化或半结构化的数据,例如表格、链接、文本块等。 4. **Microsoft Access数据库(mdb文件)**:这是一...
总的来说,这个压缩包提供了构建大数据可视化Web页面所需的全部源代码资源,涵盖了数据获取、处理、可视化以及交互设计等多个方面。通过学习和理解这些源码,开发者可以掌握如何创建高效、美观的数据可视化应用,...
CSS不仅能够控制网页文档的结构化内容,还能控制整个页面的布局和设计,提供对字体、颜色、间距等元素的精确控制。 2. 模板技术(template technology):模板技术是一种编程范式,通过定义一个固定结构的页面框架...
标题 "NOPI导出EXCEL/xls/xlsx并输出到WEB页面" 描述的是一个使用NOPI(可能是某种特定的开发框架或库)处理Excel文件并将其数据展示在Web页面上的过程。NOPI允许开发者执行Excel文件的导入、导出以及下载功能,同时...
1. 数据获取阶段主要是获取Web页面和Web服务器的数据,包括Web页面的文字内容、页面结构、图片等页面元素以及Web服务器日志中记录的客户信息。 2. 预处理数据阶段,将获取的数据按照一定的规则进行无用信息的剥离和...
在Web开发领域,实现"web页面手写功能"是一个创新且实用的功能,它允许用户通过鼠标在网页上进行手写输入,类似于平板电脑的手写识别。这个功能在教育、在线签名、绘画应用或者任何需要用户自由表达的地方都有广泛...
在Java开发中,有时我们需要将Web页面嵌入到应用程序中以提供更丰富的用户交互体验,同时,获取设备的MAC(Media Access Control)地址对于特定的身份验证或设备唯一性识别非常有用。本文将深入探讨如何使用Java内嵌...
这段代码主要用于在Web页面上显示一个网络连接的拓扑图。 #### 代码结构解析 - **JSP 导入声明**:通过 `<%@ page import="..." %>` 语法导入所需的 Java 类库,如 `NetworkStatus`、`ArrayList` 和 `List`。 - **...
这篇内容主要涉及了如何在不实例化地图的情况下,获取并显示百度地图中的城市商圈列表。这通常用于用户选择地理位置或者进行定位服务时提供方便的筛选选项。 首先,我们需要了解百度地图API。百度地图API是一款强大...
本实例中的"通过指定的Web页面获取图像并粘贴到工作表中.xlsm"文件就是一个使用VBA宏实现的典型应用。 首先,我们要理解VBA宏的基础知识。VBA是Microsoft Office套件内嵌的编程语言,它允许用户自定义功能、创建...
标题中的“echart_web页面_”表明我们正在讨论一个基于ECharts的数据可视化Web页面项目。ECharts是一款由百度开发的开源JavaScript图表库,它提供了丰富的图表类型,如柱状图、折线图、饼图等,用于在Web上进行数据...
HTML Web网页前端大屏展示页面源代码是一种专为大数据可视化设计的交互式用户界面。这种类型的页面设计通常用于商业报告、数据分析、监控系统或者展览展示等场景,它能够以直观、动态的方式呈现复杂的数据信息,帮助...