Python网络编程测试-Parser初探


HTML或者XHTML可能是每个使用电脑的人最常接触的编程语言,在感叹google , bing , baidu等等(顺便加上我老师的安图搜索)搜索引擎搜索功能的强大时,有没有想过自己编写一个呢?
下面的code是测试而已,不论从“表面“或者从”内在“来说都存在一大堆问题,仅供同学们参考
code实现了从网页信息中获取图片URL的功能
[python]
class ImgParser(HTMLParser): 
  def __init__(self): 
    self.tag = '' 
    self.attrs = '' 
    self.readingtitle = False 
    HTMLParser.__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:
[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(爬虫谐音么???是音译过来的???牛人指教)不会三下两下就完成的,了解解析机制之后,要做的就是虚心学习,交流和努力了

 

 


摘自 FishinLab的专栏

相关内容

    暂无相关文章

评论关闭