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

2016-02-19 19:23 7 1 收藏

有了下面这个解析Html生成标签树(前言)教程,不懂解析Html生成标签树(前言)的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - Web开发 】

  提示:

  根据这几天的访问量跟踪,我发现很多访者都没有很好地关注到真正进行算法描述的章节《解析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文件如下:

view plaincopy to clipboardprint?
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 
html

head

   title解析Html文件/title

   meta content="!@#$%^&*("

/head

body

   table

     tr

       td

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

         table

           tr

             td/td

           /tr

         /table

       /td

       td/td

     /tr

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

     tr

       td/td

       td/td

     /tr

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

   /table

/body

/html

解析以后图片如下:

  

  结果到是理想的。下一篇将详细介绍生成算法

  在:解析Html生成标签树(一)中我已经详细介绍了方法,并且配上了核心思路和核心代码。

来源:http://www.tulaoshi.com/n/20160219/1620896.html

延伸阅读
表格 1.定义表格 <table>..........</table>  【1】设定边框的厚度 -- border <table border=点数>  【2】设定格线的宽度 -- cellspacing <table cellspacing=点数>  【3】设定资料与格线的距离 -- cellpadding <table cellpadding=点数>  【4】调整表格宽度&...
清单 一、目录式清单  <dir> <li>项目1 <li>项目2 <li>项目3 </dir> P.S.目录式清单每一个项目不能超过20个字元(即10个中文字) 二、选项式清单 <menu> <li>项目1 <li>项目2 <li>项目3 </menu> 三、有序号的清单 <ol> <li>项目1 <li>项目2&n...
HTML指令详解 结构 <html> <head> <title>标题<title> </head> <body>..........文件内容.......... </body> </html> 1.文件标题 <title>..........</title> 2.文件更新--<meta> 【1】10秒后自动更新一次 <meta http-equiv="refresh" content=10> 【2】10秒後自动连结到另一文件 <meta htt...
标签: Web开发
标签:a (标记) 说明:标明超链接的起始或目的位置。 描述: 标签属性 · accessKey 设置或获取对象的快捷键。     · atomicselection 指定元素及其内容是否可以一不可见单位统一选择。     · begin 设置或获取时间线在该元素上播放前的延迟时间。     · canHaveChildren 获取表...
标签: PHP
  <?php如何生成静态HTML   //在你的开始处加入 ob_start();  ob_start();    //以下是你的代码  //以下是你的代码  .......    //在结尾加入 ob_end_clean(),并把本页输出到一个变量中  //在结尾加入 ob_end_clean(),并把本页输出到一个变量中  $temp = ...

经验教程

762

收藏

92
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部