注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

网易考拉推荐

HTML的解析  

2011-12-31 09:23:39|  分类: 电脑知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
背景:  
基于某些不着边际想法,只为取得HTML页面上的所有“URL”和“文本”,其它的内容都不在关心之列。  
问题:  
对于“文本”搜索,如果搜索了除英文以外的语言还好说些,如果要搜索的内容是英文本,  
那么就难以区分是“标记”还是“本文”了。对于“URL”的搜索,因为“标记”就是英文,  
这样就绕回到“对于‘文本’搜索”。另外字母的大小写,被转义的字符,引号,尖括号,都得处理。  
例如:  
<a href="http://www.csdn.net" >csdn</a>  
<script src="http://csdnimg.cn/xxxxxxxx.js" type="text/javascript"></script>  
想要搜索“csdn”这个字符串,直接以字符串遍历的法能搜索到3个,其实呢只希望搜索到1个。  
例如:  
<a href="http://bbs.csdn.net" >论坛</a>  
<a href="http://bbs.csdn.net" >论 坛</a>  
<a href="http://bbs.csdn.net" >论  坛</a>  
想要搜索“论坛”这个字符串,按语义上讲,希望在搜索时能搜到3个。  
但直接以字符串遍历的法能搜到1个,原因在于加了“空格”后的字符串,  
计算机不知道对于人来讲意思并没有变。  
  
总结:  
1:直接搜索特定字符串,不多了就是少了。  
2:尝试过MS的COM库,功能强大且齐全,但耗费的资源也相当多。  
3:耳熟能详的搜索引擎也跑过几个回合,因没有耐心翻遍所有网页只好放弃。  
  
结论:  
只能把HTML页面完整的解析完毕才能达找到想到的东西,尽管不是全部,但情况要好很多。  
  
方法:  
HTML语句结构是:<a href="http://www.csdn.net" >aaaa</a> 或 <link href="/favicon.ico" />  
等等一连串类似的语句组成,并且只有嵌套没有循环(脚本只能算上面提到的“文本”)。  
分界符(这个词本人自己的称呼)使用的是“ <>""''=空格 ”,把两个分界符之间的内容看作一个链表节点,  
“标记”a与“标记”/a是“父”节点与“子”节点的关系,“标记”a与“标记”href是“兄弟”节点的关系。  
这样的好处是不用关心“标记”含义,就可以把整个页面解析成一个二维链表。  
纵向可以遍历“标记”和“文本”,横向可以找到“文本”对应用“URL”。  
当然实际情况要复杂的多,种种异常情况都要考虑。如:转意字符,脚本中的括号对称验证等等,  
最糟糕是碰到错误的语法,或者根本就不是HTML页面(这个就不属性本文说明范围了)。  
  
  评论这张
 
阅读(453)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017