Python 网络编程测试-Parser初探

来源:互联网 发布:华为云计算业务运营部 编辑:程序博客网 时间:2024/06/08 00:26

HTML或者XHTML可能是每个使用电脑的人最常接触的编程语言,在感叹google , bing , baidu等等(顺便加上我老师的安图搜索偷笑)搜索引擎搜索功能的强大时,有没有想过自己编写一个呢?

下面的code是测试而已,不论从“表面“或者从”内在“来说都存在一大堆问题,仅供同学们参考

code实现了从网页信息中获取图片URL的功能

class ImgParser(HTMLParser):  def __init__(self):self.tag = ''self.attrs = ''self.readingtitle = FalseHTMLParser.__init__(self)  def handle_starttag(self , tag , attrs):if tag == 'img':  self.readingtitle = True  for name , value in attrs:print(value)  def handle_data(self  , data):if self.readingtitle == True:  self.tag += data  def handle_endtag(self , tag):if tag == 'img':  self.readingtitle = False

这里HTMLParser模块还是要说一下的(很有意思的模块):

HTMLParser本身是不提供太多功能的,如果需要解析HTML的话,就继承HTMLParser就可以了。对于一些特定的功能函数,类似于C++中的virtual函数(个人理解)来定义对HTML中的Element进行细微的处理:

handle_starttag(self , tag , attrs): 处理开始标签内的信息<tag attrs = "...">data</tag>,其中attrs(属性)将会以存储在list中

handle_endtag(self , tag):处理结束标签内的信息<tag attrs = "...">data</tag>

handle_data(self , data):处理元素数据信息<tag attrs = "...">data</tag>

测试的test.html:

<!--Basic Title parsing--><HTML><HEAD><TITLE>Document Title</TITLE>  </HEAD>  <BODY id="1" name="this is a body"><img id = "1" src = "here is the image data" >hoho</img>  here is the test  </BODY></HTML>

当然一个好的parser(爬虫谐音么???是音译过来的???牛人指教)不会三下两下就完成的,了解解析机制之后,要做的就是虚心学习,交流和努力了 

原创粉丝点击