提示:
根据这几天的访问量跟踪,我发现很多访者都没有很好地关注到真正进行算法描述的章节《解析Html生成标签树(一)》,特此进行提示。
搜索引擎一个最重要的步骤就是,获得网页的正文内容,我相信每个人看见一篇网页的时候,从视觉上都很容易知道哪个部分是正文内容,哪个部分是版权信息,哪个部分是广告信息。但是要让计算机明白这些,估计要若干年(到时候还不知道人类是否已经变异成4只眼睛,5个耳朵。。。)之后。
在网络上大量存在一些关于网页正文抽取的理论性文章,最著名的应该数介绍北大天网的《搜索引擎原理技术与系统》一书中所介绍的网页净化技术了,中心思想大概就是,首先将Html源文件解析成一棵以Html标签为节点的树(为了后面的描述方便,我们称其为“Html树”),然后再根据一定的启发式规则进行判断,当然各位可以具体去找这书来看看。所以很多的都是参考这种方式来实现。遗憾的是我没有找到源代码,并且我也不擅长Linux编程,所以即使拿到代码,估计也会头痛很久(看不懂啊)。怎么办呢?Baidu以后Google,Google以后Baidu。我都不知道为了这个事情,向这两家贡献了多少流量啊,估计他们应该给我发奖金。但是我都没有找到自己想要的代码。。。据说有一个名叫HtmlParser的家伙可以做这东西。但是我下载了一个以后(后来证明应该不是正宗的,在一个老外写的Spider中有这么几个类http://www.codeproject.com上下载的)发现不是我想要的,虽然可以很好的解析出里面的超级链接之类的东西。所以最终确定不能用,最多只能作为学习例子进行研究。
估计HtmlParser应该是可以实现,但是我人懒,没有找到使用这东西的可执行文件,最主要的是我根本就还没有下载到HtmlParser工具包。我最喜欢的是能够先看效果,然后研究,因为我没有太多的时间来研究老外写的代码,说实在话,我的代码有点自己的风格,但是老外的代码有时候也是很难读懂的,这点“要向老外学习”。
我也找到这么篇文章:http://blog.csdn.net/lanphaday/archive/2007/08/13/1741185.aspx,说这种方法可行,可是这个不是C#写的,也找不到可执行文件,最重要的是,最终我都没有读懂这文章。
某天之后我终于醒悟,决定自己写一个能够解析Html文档的东西。自己写的,想怎么改就怎么改,想怎么用就怎么用。再废话几句,为什么要把Html先解析成Html树呢,因为在实际的搜索引擎应用中,人们可能会需要利用到每个Html的标签的一些属性(比如粗体、斜体、颜色等等)来判断一篇网页的重要程度,便于对网页进行进一步的挖掘。
我相信各位也是比较喜欢首先看效果的,我也首先给各位看看效果:
Html文件如下:
<html>
<head>
<title>解析Html文件</title>
<meta content="!@#$%^&*(">
</head>
<body>
<table>
<tr>
<td>
<table>
<tr>
<td></td>
</tr>
</table>
</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
解析以后图片如下:
结果到是理想的。下一篇将详细介绍生成算法
在:http://blog.csdn.net/RonoTian/archive/2008/06/06/2517568.aspx中我已经详细介绍了方法,并且配上了核心思路和核心代码。
分享到:
相关推荐
- **兼容处理**:为了确保老版本浏览器也能正确解析,开发者需要考虑如何在旧浏览器中实现这些新标签的功能,通常通过CSS样式和JavaScript来实现兼容性。 3. **微数据(Microdata)** - 微数据是一种用于添加机器...
### supp标签的深入解析及其应用 #### 前言 在深入探讨`supp`标签的使用之前,我们首先理解其背景与价值。`supp`标签是针对Struts2框架的一种扩展,旨在提供更为丰富的功能性和灵活性。通过封装一系列自定义标签,...
根据提供的文件信息:“封面前言目录.pdf”,描述为:“Java Web标签应用开发 封面前言目录.pdf”,标签为:“封面”。结合这部分信息,我们可以推断出文档主要关注的是Java Web中的标签应用开发,并且这份文档可能...
8. **模板中的HTML**:在动态生成的HTML模板中,遵循上述规范,确保模板代码的清晰和规范。 遵循这些规范,开发者可以编写出更加整洁、高效且易于维护的HTML代码,从而提高整个项目的质量和效率。
#### 标签解析 - **JavaScript**:一种常用的客户端脚本语言,用于添加交互性和动态效果到网页上。 - **Web**:指万维网,本书讨论的核心领域。 - **DOM**:即文档对象模型,一种标准的数据结构表示法,用于处理XML...
18.4.5 使用 htmlContent 标签 80 18.4.6 使用 portlet 标签 82 18.4.7 使用 select 标签 83 18.4.8 创建 Tab页 84 18.4.9 使用 displayTag标签 85 18.4.10 使用 updateField 标签 87 18.5 关于 AjaxTags 的...
#### 前言 Django是一款强大的Web框架,它提供了许多便捷的功能来加速Web应用程序的开发。其中,Django的`admindocs`应用是一个非常实用的功能,可以帮助开发者更好地理解和维护自己的项目。通过`admindocs`,开发者...
JSP是一种用于生成动态网页的技术,它允许在HTML代码中嵌入Java代码片段。而ZK则是一个开源的富互联网应用程序框架,它支持创建复杂的用户界面而无需编写大量的JavaScript代码。 ##### 准备工作 在开始之前,请...
XML文档的结构非常严谨,包括序言、文档元素和结束标签等部分。一个规范的XML文档必须遵循XML1.0推荐标准中的语法规则,并且所有引用的解析实体也需要规范。XML文档的结构分为三个主要部分:序言(可选)、根元素和...
4. **解析**:Nutch 使用 HTML 解析器提取网页的文本内容,去除 HTML 标签和脚本。 5. **分析**:进行词法分析,生成倒排索引,为后续的搜索提供基础。 6. **链接分析**:应用 PageRank 或其他链接分析算法计算 URL ...
2. **网页预处理**:预处理包括清洗HTML标签、去除噪声文本(如广告、脚本等)、分词和标准化文本。Python的nltk、jieba等库提供了中文分词功能,能将文本拆分成可搜索的关键词。同时,可以使用正则表达式进行文本...
#### 序言与基础 - **获取ThinkPHP**: 可通过官方网站或其他可靠渠道下载ThinkPHP3.2版本。 - **环境要求**: - 支持Windows/Unix服务器环境。 - 兼容Apache、IIS、nginx等主流Web服务器。 - 支持Mysql、MsSQL、...
- **XML与E4X处理**:提供了XML数据解析、生成和操作的方法,以及E4X语法的使用技巧,增强了数据处理能力。 ### JavaScript编译器功能 - **自动编译与手动编译**:介绍了intra-mart的JavaScript编译器工作原理,...
#### 序言 - **手册目的与定位**:作为ThinkPHP3.2.3版本的官方文档,本手册旨在为开发者提供全面、系统的开发指南,帮助他们更好地理解和使用该框架。 #### 基础 - **获取ThinkPHP**: - **下载地址**:ThinkPHP...
#### 一、序言与概述 - **intra-mart 应用程序开发概要**: - **JavaEE开发模式**:该模式利用JSP文件、Servlet和EJB组件进行开发,旨在提供一个不依赖特定系统或Web应用服务器的共享平台。这种开发模式的引入极大...
前言 1. 简介 1.1. 概览 1.1.1. 使用场景 2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 4. 全局对象window 在浏览器环境中,全局对象是window,所有的全局变量和函数都是window对象的属性...
- Maven通过解析`pom.xml`文件中的`<dependencies>`标签来管理项目的外部依赖。 - 当构建项目时,Maven会自动下载所需的依赖项到本地仓库。 3. **依赖范围说明** - `compile`: 编译时依赖,是最常用的依赖范围。...