`
saybody
  • 浏览: 908535 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

解析Html生成标签树(前言)

阅读更多

提示:

根据这几天的访问量跟踪,我发现很多访者都没有很好地关注到真正进行算法描述的章节《解析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中我已经详细介绍了方法,并且配上了核心思路和核心代码。

分享到:
评论

相关推荐

    传智HTML5笔记1

    - **兼容处理**:为了确保老版本浏览器也能正确解析,开发者需要考虑如何在旧浏览器中实现这些新标签的功能,通常通过CSS样式和JavaScript来实现兼容性。 3. **微数据(Microdata)** - 微数据是一种用于添加机器...

    supp标签的使用

    ### supp标签的深入解析及其应用 #### 前言 在深入探讨`supp`标签的使用之前,我们首先理解其背景与价值。`supp`标签是针对Struts2框架的一种扩展,旨在提供更为丰富的功能性和灵活性。通过封装一系列自定义标签,...

    封面前言目录.pdf

    根据提供的文件信息:“封面前言目录.pdf”,描述为:“Java Web标签应用开发 封面前言目录.pdf”,标签为:“封面”。结合这部分信息,我们可以推断出文档主要关注的是Java Web中的标签应用开发,并且这份文档可能...

    HTML编码规范

    8. **模板中的HTML**:在动态生成的HTML模板中,遵循上述规范,确保模板代码的清晰和规范。 遵循这些规范,开发者可以编写出更加整洁、高效且易于维护的HTML代码,从而提高整个项目的质量和效率。

    DOM Scripting Web Design with JavaScript and the Document Object Model

    #### 标签解析 - **JavaScript**:一种常用的客户端脚本语言,用于添加交互性和动态效果到网页上。 - **Web**:指万维网,本书讨论的核心领域。 - **DOM**:即文档对象模型,一种标准的数据结构表示法,用于处理XML...

    基本于J2EE的Ajax宝典.rar

    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 Admin文档生成器使用详解

    #### 前言 Django是一款强大的Web框架,它提供了许多便捷的功能来加速Web应用程序的开发。其中,Django的`admindocs`应用是一个非常实用的功能,可以帮助开发者更好地理解和维护自己的项目。通过`admindocs`,开发者...

    ZK框架JSP TAG使用手册

    JSP是一种用于生成动态网页的技术,它允许在HTML代码中嵌入Java代码片段。而ZK则是一个开源的富互联网应用程序框架,它支持创建复杂的用户界面而无需编写大量的JavaScript代码。 ##### 准备工作 在开始之前,请...

    用XSLT和Xpath查询XML文档.doc

    XML文档的结构非常严谨,包括序言、文档元素和结束标签等部分。一个规范的XML文档必须遵循XML1.0推荐标准中的语法规则,并且所有引用的解析实体也需要规范。XML文档的结构分为三个主要部分:序言(可选)、根元素和...

    nutch网页爬取总结

    4. **解析**:Nutch 使用 HTML 解析器提取网页的文本内容,去除 HTML 标签和脚本。 5. **分析**:进行词法分析,生成倒排索引,为后续的搜索提供基础。 6. **链接分析**:应用 PageRank 或其他链接分析算法计算 URL ...

    基于python的搜索引擎设计与实现

    2. **网页预处理**:预处理包括清洗HTML标签、去除噪声文本(如广告、脚本等)、分词和标准化文本。Python的nltk、jieba等库提供了中文分词功能,能将文本拆分成可搜索的关键词。同时,可以使用正则表达式进行文本...

    thinkphp3.2离线文档

    #### 序言与基础 - **获取ThinkPHP**: 可通过官方网站或其他可靠渠道下载ThinkPHP3.2版本。 - **环境要求**: - 支持Windows/Unix服务器环境。 - 兼容Apache、IIS、nginx等主流Web服务器。 - 支持Mysql、MsSQL、...

    intra-mart-script中文版教程

    - **XML与E4X处理**:提供了XML数据解析、生成和操作的方法,以及E4X语法的使用技巧,增强了数据处理能力。 ### JavaScript编译器功能 - **自动编译与手动编译**:介绍了intra-mart的JavaScript编译器工作原理,...

    ThinkPHP3.2.3完全开发手册.docx

    #### 序言 - **手册目的与定位**:作为ThinkPHP3.2.3版本的官方文档,本手册旨在为开发者提供全面、系统的开发指南,帮助他们更好地理解和使用该框架。 #### 基础 - **获取ThinkPHP**: - **下载地址**:ThinkPHP...

    intra-mart产品开发说明

    #### 一、序言与概述 - **intra-mart 应用程序开发概要**: - **JavaEE开发模式**:该模式利用JSP文件、Servlet和EJB组件进行开发,旨在提供一个不依赖特定系统或Web应用服务器的共享平台。这种开发模式的引入极大...

    Spring API

    前言 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(注解)...

    从零开始学习jQuery

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 4. 全局对象window 在浏览器环境中,全局对象是window,所有的全局变量和函数都是window对象的属性...

    maven3.0.4详解

    - Maven通过解析`pom.xml`文件中的`&lt;dependencies&gt;`标签来管理项目的外部依赖。 - 当构建项目时,Maven会自动下载所需的依赖项到本地仓库。 3. **依赖范围说明** - `compile`: 编译时依赖,是最常用的依赖范围。...

Global site tag (gtag.js) - Google Analytics