這個文檔定義了一個 HTMLParser 類作為解析 HTML 文檔的基礎。
HTMLParser 類的實例可以存儲並調用方法來處理 HTML 標簽和數據。
我們一般通過建立一個 HTMLParser 的子類然后覆蓋它的方法來實現我們想要的操作。
HTMLParser 有很多方法,一般我們只需要覆蓋下面幾個方法:
HTMLParser.handle_starttag(tag, attrs) #遇到一個開始標簽時就會執行這個方法 #tag 是遇到的標簽,attrs attrs是 (屬性,值)元組(tuple)的列表(list)。 HTMLParser.handle_endtag(tag) #遇到一個結束標簽時就會執行這個方法 #tag 是遇到的標簽 HTMLParser.handle_data(data) #這個方法處理標簽里面的內容 #data 是遇到的內容
我們先通過一個基本的例子來了解一下這個模塊是如何工作的
這個例子會打印出開始標簽和結束標簽以及標簽里面的內容
from HTMLParser import HTMLParser class MyHTMLParser(HTMLParser): def handle_starttag(self, tag, attrs): print '遇到的開始標簽:%s'%tag def handle_endtag(self, tag): print '遇到的結束標簽:%s'%tag def handle_data(self, data): print '遇到的內容:%s'%data m = MyHTMLParser() m.feed('<h3>標題三</h3>')
輸出:
遇到的開始標簽:h3 遇到的內容:標題三 遇到的結束標簽:h3
我們來分析一下這個例子做了什么。首先我們建立了一個 HTMLParser 的之類,並覆蓋了它的方法。
運行時,它首先遇到了一個開始標簽 “< h3>” ,執行 HTMLParser.handle_starttag(tag, attrs) 方法,打印出開始標簽。
接着它又遇到了標簽里面的內容 “標題三” ,執行 HTMLParser.handle_data(data) ,打印出 “標題三” 。
最后它遇到結束標簽,執行 HTMLParser.handle_endtag(tag) ,打印出結束標簽。
從這個例子可以很快的理解如何使用這個模塊來分析 HTML。