python解析HTML的方法——HTMLParser

来源:互联网 发布:windows音效 编辑:程序博客网 时间:2024/05/29 12:07

      HTMLParser是python用来解析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。 HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它 主要的用户回调函数的命名都是以handler_开头的,都是HTMLParser的成员函数。当我们使用时,就从HTMLParser派生出新的类,然 后重新定义这几个以handler_开头的函数即可。

#coding=utf-8 from HTMLParser import HTMLParser class MyParser(HTMLParser):    """一个简单的HTMLparser的例子"""         def handle_decl(self, decl):        """处理头文档"""        HTMLParser.handle_decl(self, decl)        print decl         def handle_starttag(self, tag, attrs):        """处理起始标签"""        HTMLParser.handle_starttag(self, tag, attrs)        if not HTMLParser.get_starttag_text(self).endswith("/>"):            print "<",tag,">"                 def handle_data(self, data):        """处理文本元素"""        HTMLParser.handle_data(self, data)        print data,             def handle_endtag(self, tag):        """处理结束标签"""        HTMLParser.handle_endtag(self, tag)        if not HTMLParser.get_starttag_text(self).endswith("/>"):            print "</",tag,">"         def handle_startendtag(self, tag, attrs):        """处理自闭标签"""        HTMLParser.handle_startendtag(self, tag, attrs)        print HTMLParser.get_starttag_text(self)             def handle_comment(self, data):        """处理注释"""        HTMLParser.handle_comment(self, data)        print data    def close(self):        HTMLParser.close(self)        print "parser over"                   demo=MyParser()demo.feed(open("d:\\hello.html").read()) demo.close()


 

我的代码:

class MyHTMLParser(HTMLParser):    ''' parser class '''    def __init__(self):        HTMLParser.__init__(self)            def handle_starttag(self,tag,attrs):        ''' The wrong row has the wrong bgcolor'''        if tag == 'tr' :            if len(attrs):                if attrs[0][1] != '#22DD22':                    print 0def getError():    ''' parser the html text '''    parserObj = MyHTMLParser()    parserObj.feed(getHTML())    parserObj.close()

 class MyHTMLParser(HTMLParser):    ''' parser class '''    def __init__(self):        HTMLParser.__init__(self)        self.tr = False        self.td = 0        self.ToPrint = False    def handle_starttag(self,tag,attrs):        ''' find the tr and find the td '''        HTMLParser.handle_starttag(self, tag, attrs)          if tag == 'tr' :            if len(attrs):                self.tr = True                        if tag == 'td' and self.tr == True:            if self.td == 0:                self.td = self.td + 1            else:                self.ToPrint = True                self.tr = False                self.td = 0                def handle_data(self,data):        ''' print the td's text '''        HTMLParser.handle_data(self, data)          if self.ToPrint:                self.ToPrint = False            if data.strip() != 'true':                print 0                sys.exit()


 

 

原创粉丝点击