不可否认,万维网是到目前为止世界上最丰富和最密集的信息来源。但是,它的结构使它很难用系统的方法来利用信息。本文描述的方法和工具将使那些熟悉 Web 最常用技术的开发人员能快速而便捷地获取他们所需的以 Web 方式发 布的信息。
在信息时代快速成长起来的万维网导致各种各样的公用信息被大量分发。不幸的是,尽管作为信息主要载体的 HTML 提供了一种方便地向读者呈现信息的方法,但它可能并不是一个很好的可以从中自动抽取与数据驱动的服务或应用程序相关的信息的结构。
已 经尝试了多种方法来解决这个问题。大多数方法都采用一些专用查询语言的形式把 HTML 页面的各个部分映射成代码,而这些代码将 Web 页面上的信息填入到数据库中。尽管这些方法可能提供一些好处,但大部分会因为以下两个原因变得不切实际:首先,它们需要开发人员花时间去学习一种无法在其 它情况下使用的查询语言,其次,它们还不够健壮到能处理不可避免的对目标 Web 页面的简单更改。
在本文中,将讨论使用标准 Web 技术—— HTML、XML 和 Java ——开发的一种 基于 Web 的数据挖掘方法。这种方法即使不比其它专用方法更强大,也和其它方法不相上下,并且对于那些已经熟悉 Web 技术的人来说,只需要付出很少的努力就可以收到很好的效果。另外,本文还附送了许多开始数据抽取所需的代码。
HTML:优点与缺点
HTML 通常是一个很难用程序手段处理的媒体。Web 页面中的大多数内容描述与数据驱动的系统无关的格式编排,并且,由于要动态添加标题以及编写其它服务器端脚本,所以文档结构可能在每次连接到页面时都需要 进行更改。又因为所有 Web 页面主要部分的格式编排不合理,所以使问题变得更为复杂,其结果是现在的 Web 浏览器在进行 HTML 语法分析 时非常不严谨。
尽管存在这些问题,但是 HTML 在数据挖掘方面仍然具有优势。您所感兴趣的数据通常可以用 HTML 树中深度嵌套的单 个 <table>
或 <div>
标记隔离开来。这使得抽取过程可以专门在文档的一小部分内执行。在缺少客户机端脚本的情况下,只有一种定义下拉菜单和其它数据列表的方法。HTML 的这些方面允许我们在一旦拥有可用格式的数据时能集中精力于数据抽取。
背景技术
这里描述的数据挖掘技术的关键是把现有的 Web 页面转换成 XML,或转换成 XHTML 可能更适当,并使用众多工具中的一小部分来处理 XML 结构的数据, 以检索出适当的数据。
幸 好有一个解决方案可以改正 HTML 页面设计的薄弱之处。Tidy(可以从一些编程语言中获取的库)是一个免费使用的产品,可用于改正 HTML 文档中的常见错误并生成格式编排良好的等价文档。还可以使用 Tidy 来 生成 XHTML(XML 的子集)格式的这些文档。(请参阅参考资料)。
本文中的代码示例是用 Java 编写的,并且在编译和运行它们时,需要在您系统 的 classpath
中存在 Tidy jar 文 件。它们还需要通过 Apache 项目、Xerces 和 Xalan 使 XML 库可 用。这两个库都基于 IBM 提供的代码并分别控制 XML 语法分析 和 XSL 变换。这三种库中的每一个都可从 Web 上免费获取,要找到它们,可以追随上述链接或参考本文后面的参考资料。理解 Java 编程语言、XML 和 XSL 变换将对您理解以下示例有帮助。有关这些技术的参考资料,可以在本文后面找到。
方法概述和示例简介
我们用示例的方式来介绍数据抽取的方法。假设我们有兴趣跟踪几个月以来每天不同时间测得的华盛顿州西雅图的温度和湿度级别。假如,没有现成的软件用于报告此类信息以满足我们的需求,我们仍然拥有从众多公共网站收集此类信息的机会。
图 1 举例说明了抽取的全过程。Web 页面只有在创建了一个可合并到现有数据集的数据集后才会被检索和处理。
图 1. 概要说明抽取过程
只需要很少的几个步骤,我们就可以拥有一个收集我们信息的合适而可靠的系统。这里列出这些步骤是为了提供该过程的简要概述,图 1 中显示的是这一过程 的较高形式。
- 标识数据源并把它映射成 XHTML。
- 查找数据内的引用点。
- 将数据映射成 XML。
- 合并结果并处理数据。
这些步骤中的每一步都将加以详细说明,并将提供执行它们所必需的代码。
获取信 XHTML 格式的源信息
为了抽取数据,当然需要知道可以在哪里找到它。在大多数情况下,源信息是显而易见的。如果要从 developerWorks 收集文章的标题和 URL,我们将使用 http://www.ibm.com/developerWorks 作为我们的目标。在天气这个例子中,我们有若干可供选择的信息源。我们将在示例中使用 Yahoo!Weather,但使用其它信息源也具有同等效果。我们将特别跟踪 URL:http://weather.yahoo.com/forecast/Seattle_WA_US_f.html 上 的数据。图 2 显示了这个页面的屏幕快照。
图 2. 华盛顿州西雅图的 Yahoo! Weather Web 页面
在考虑信息源时,牢记以下这些要素非常重要:
- 信息源是否是在可靠的网络连接上生成可靠的数据?
- 信息源从现在起将存在多久?一个星期、一个月或甚至一年?
- 信息源的布局结构有多稳定?
我们寻求能够在动态环境下工作的健壮的解决方案的过程中,在抽取可用的最可靠和最稳定的信息源时,我们的工作将是最简单的。
一旦确定了信息源,我们在抽取过程中的第一步就是将数据 从 HTML 转换成 XML。我们将通过构造名为 XMLHelper
(由 static helper 函数 组成)的 Java 类来完成这一任务以及其它与 XML 相关任务。这个类的全部信息源可以 通过以下到 XMLHelper.java
和 XMLHelperException.java
的 链接找到。随着本文的继续展开,我们将构建这个类的方法。
我们使用 Tidy 库提供的函数在 XMLHelper.tidyHTML()
方法中执行 转换。这个方法接受 URL 作为一个参数并返回一个“XML 文档”作 为结果。当调用此方法或任何其它与 XML 相关的方法时,请仔细检查是否有任何异 常。清单 1 中显示了执行这些操作的 代码。图 3 显示了代码结果,Microsoft 的 Internet Explorer XML 查看器使用 Weather 页面中的 XML。
图 3. 转换成 XHTML 的 Yahoo! Weather Web 页面
查找数据的引用点
请 注意,无论是在 Web 页面还是源 XHTML 视图中的绝大多数的信息都与我们完 全无关。我们接下来的一个任务是在 XML 树中找出一个特定区域,我们可从中抽取我们的数据而无需关心外来信息。对于更复杂的抽取,我们可能需要在单个页面上找出这些区域的若干实例。
完成这一任务的最简单的办法通常是,首先检查 Web 页面,然后使用 XML。只需要看一下页面,就可以知道我们正在查找的信息位于页面的中上部区域中。即使对 HTML 的熟悉程度非常有限,也很容易推断出我们正在查找的数据可能都包含在同一 个 <table>
元素下,并且这个表可能总是包含 象“Appar Temp”和“Dewpoint”这样的字,无论当天的数据可能是什么。
记下我们观察到的内容,现在要考虑页面所生成的 XHTML。搜 索“Appar Temp”的文本(如图 4 所示)说明该文本确实在一个包含我们所需的所有数据的表中。我们将把该表作为引用点或锚。
图 4:通过查找包含文本“Appar Temp”的表找到锚
现在,我们需要找到这个锚的方法。因为我们正准备使用 XSL 来转换我们 的 XML,所以可以使用 XPath 表达式来完成这个任务。我们将使用以下这个普通的表达式:
/html/body/center/table[6]/tr[2]/td[2]/table[2]/tr/td/table[6]
|
这个表达式指定了从根 <html>
元素到锚的路径。这个普通的方法将导致我们对页面布局的修改非常容易遭到破坏。较好的方法是根据周围的内容指定锚。通过使用这个方法,我们把 XPath 表达式重新 构造成:
//table[starts-with(tr/td/font/b,'Appar Temp')]
|
...更好一些,可以利用 XSL 将 XML 树转换成字符串的方法:
//table[starts-with(normalize-space(.), 'Appar Temp')]
|
将数据映射成 XML
拥有这个锚,我们可以创建实际抽取数据的代码。这个代码将以 XSL 文件的形式 出现。XSL 文件的目的是标识锚,指定如何从锚获取我们正在查找的数据(以简短跳跃的方式),并且用我们所需的格式构造一个 XML 输出文件。这个过程实际上比想象的要简单得多。清单 2 给出 了将执行这个过程的 XSL 代码,这些代码还可 以作为一个 XSL 文本文件获取。
<xsl:output>
元素仅告诉处理器我们希望的的变换结果 是 XML。第一个,<xsl:template>
建立名 为 <xsl:apply-templates>
的根元素以搜索锚。第二个,<xsl:template>
让我们只匹配需要匹配的内容。最后那个,<xsl:template>
在 match
属性中定义锚,然后告诉处理器跳到我们尝试挖掘的温度与湿度数据。
当然,只编写 XSL,作业将不会完成。我们还需要一个执行转换的工具。因此, 我们利用 XMLHelper
类方法对 XSL 进行语法分析并执行这个转换。执行这些任务的方法分别名为 parseXMLFromURL()
和 transformXML()
。清单 3 给出了使用这些方法的 代码。
清单 3
/** * Retrieve the XHTML file written to disk in the Listing 1 * and apply our XSL Transformation to it. Write the result * to disk as XML. */public static void main(String args[]) { try { Document xhtml = XMLHelper.parseXMLFromURLString("file://weather.xml"); Document xsl = XMLHelper.parseXMLFromURLString("file://XSL/weather.xsl"); Document xml = XMLHelper.transformXML(xhtml, xsl); XMLHelper.outputXMLToFile("XML" + File.separator + "result.xml"); } catch (XMLHelperException xmle) { // ... Do Something ... }}
|
合并与处理结果
如 果我们只执行一次数据抽取,我们现在已经完成了。但是,我们并不只是想知道某一时刻的温度,而是要知道若干不同时刻的温度。现在,我们需要做的是反复执行 抽取过程,把结果合并到 单个 XML 数据文件中。我们本来可以再次使用 XSL 执行,但我们将为 把 XSL 文件合并到 XMLHelper
类中最后创建一个方法。mergeXML()
方法允许我们把在当前抽取中获得的数据合并到包含以前抽取数据的档案文件中。
WeatherExtractor.java
文件中给出了用于运行整个过程的代码。我把程序执行调度任务留给读者,因为执行这些任务的与系统相关的方法通常比简单的编程方法高级。图 5 显示 了每天运行一次 WeatherExtractor
,共运行四天的结果。
图 5. Web 抽取的结果
结束语
在 本文中,我们已经描述并证明从目前存在的最大信息来源——万维网——抽取信息的强壮方法的基本原则。我们还讨论了能够使任何 Java 开发人员花最少的精力和具备最少的抽取经验就可以开始他们自己抽取工作所必需的编码工具。尽管本文中的示例仅集中于抽取有关华盛顿,西雅图天气的信息,但 是这里出现的所有代码几乎都可以在任何数据抽取中重复使用。事实上,除 对 WeatherExtractor
类进行少许更改外,需要为其它数据挖掘项目进行更改的代码只有 XSL 变换代码(顺便提一下,它从 不需要编译)。
这种方法与想象中的一样简单。通过明智地选择可靠的数据源以及在这些数据源中选取与内容相关但与格式无关的锚,可以使您拥有一个维护成本低廉,可靠的数据抽取系统。并且,根据经验级别和要抽取的数据量,您可以在一小时之内就能安装与运行它。
分享到:
相关推荐
基于Web数据挖掘的COVID-19流行病学特征分析.pdf
标题中提到的“基于Web数据挖掘的个性化推荐系统设计”,意味着本篇文档聚焦于利用互联网上的数据挖掘技术,旨在构建一个能够为用户提供个性化商品或服务推荐的系统。个性化推荐系统对于提升用户体验、提高电商平台...
#### 四、XML在基于Web数据挖掘中的应用 随着Web数据的多样化和复杂性增加,XML作为一种标准的数据交换格式,在基于Web的数据挖掘中发挥了重要作用。XML提供了结构化的数据表示方法,使得数据的存储、传输和解析更加...
根据提供的文件信息,以下是对“基于Web数据挖掘的资源服务系统”的知识点详细说明: 1. Web数据挖掘技术介绍:Web数据挖掘是指从Web上庞大的信息资源中提取出有价值的数据模式和知识的过程。它通常涉及从网页、...
基于Web数据挖掘中XML的应用研究,主要探讨了如何利用XML(可扩展标记语言)解决Web数据挖掘中信息组织结构性差的问题,从而提高网络搜索引擎的精度。首先,文章指出了HTML语言由于数据结构性差导致Web数据挖掘工作...
远程教育系统构建基于Web数据挖掘技术的论文详细阐述了如何利用数据挖掘技术优化和增强远程教育系统的功能性与个性化,提高网络教育的质量。本文将详细解析远程教育系统的现状、Web数据挖掘技术的原理和分类,以及...
这篇文章主要探讨了基于WEB数据挖掘技术在开放大学网络考试系统中的应用研究。文章从数据分析和研究的角度出发,分析了现有开放大学网络考试系统的不足,并引入了WEB数据挖掘的概念,探讨了如何利用WEB数据挖掘技术...
Web数据挖掘综述3篇 分类数据挖掘综述及应用 关联规则数据挖掘综述 基于Web数据挖掘的综述 离群数据挖掘综述 流数据挖掘综述 流数据挖掘综述 时间序列数据挖掘综述 数据挖掘综述6篇 物流管理数据挖掘综述 医学数据...
### 基于Web数据挖掘的研究 #### 一、研究背景与意义 互联网技术的飞速发展推动了信息时代的到来,使得网络空间内的信息量急剧膨胀。据估计,全球网络上的网页数量正以指数级的速度增长,这为人们获取信息提供了...
本文以学科馆员协同高校科研教师完成重大科研项目为目标,提出了一种科研协同服务平台的构想,该平台将基于Web数据挖掘技术,为学科馆员提供个性化和深层次的服务。具体而言,学科馆员可以通过Web挖掘技术为科研教师...
基于Web数据挖掘的旅游需求分析与预测 本文讨论了基于Web数据挖掘技术对旅游需求的分析和预测。通过对Web数据的挖掘,可以了解游客的偏好、旅行方式、住宿选择和景点参观等信息。同时,通过机器学习算法,可以建立...
网络信息安全防范模型基于Web数据挖掘技术,主要分为三个核心部分:过滤器、挖掘综合器和方法选择专家系统及知识库。过滤器的作用是提取数据库中的相关信息,并使用多种方法分析比对,保持数据的一致性。挖掘综合器...
综上所述,基于Web数据挖掘的个性化学习系统研究旨在通过技术手段实现更加个性化和智能化的学习环境,使学习者能够获得更加符合自己特点和需求的学习支持,从而提升教育质量和效率。随着数据挖掘技术的不断进步和...
文章提到的节电降耗实时分析系统是基于Web数据挖掘设计的,系统通过Web接口实现与营销系统和大客户负荷管理系统之间的实时互联互通,有效地提取所需数据信息。该系统框架的设计旨在实现数据获取的高效化和自动化,...
本文档主要讨论了基于Web数据挖掘的购书推荐系统研究与设计,重点在于如何通过现代信息技术提高用户获取有价值信息的效率和准确性。随着互联网和信息技术的飞速发展,互联网成为了人们日常生活不可或缺的一部分。...
本文的主题是设计一个基于Web数据挖掘技术的健康餐饮分析推荐系统。随着互联网的普及和电子商务的蓬勃发展,利用数据挖掘技术对Web上的海量数据进行分析,已经成为获取商业洞察和消费者行为模式的有效手段。在这种...
基于Web数据挖掘的用户兴趣获取方法,要求研究者结合用户访问Web的行为,通过观察、分析和建模等手段,不断优化用户兴趣模型,从而更好地服务于用户的个性化需求。这不仅包括直接从用户那里获取的显性数据,还包括...
本文详细探讨了基于Web数据挖掘的个性化网络教学平台的研究,特别是利用MiniBatchK-Means算法进行课程推荐聚类分析的实践与效果。 首先,文章指出了传统网络教学平台在选课过程中普遍存在的问题——缺乏个性化推荐...
【摘要】中的文章介绍了基于Web数据挖掘的失眠症人群特征分析方法。首先,文章提到了网络爬虫技术,这是获取在线医疗网站中与失眠相关数据的主要手段,通过编写特定的爬虫程序,可以抓取网页上的信息,如患者咨询、...