利用Python抓取和解析網頁(二)(3)
中國網際網路絡資訊網提示: 對搜尋引擎、檔案索引、文檔轉換、資料檢索、站點備份或遷移等應用程式來說,經常用到對網頁(即HTML檔案)的解析處理。事
三、從HTML文檔中提取文本 處理HTML文檔的時候,我們常常需要從其中提取出所有的文本。使用HTMLParser子產品後,這項任務将變得非常簡單了。首先,我們需要定義一個新的HTMLParser類,以覆寫handle_data()方法,該方法是用來解析并文本資料的。 import HTMLParser import urllib class parseText(HTMLParser.HTMLParser): def handle_data(self, data): if data != ' \n ' : urlText.append(data) lParser = parseText() lParser.feed(urllib.urlopen( \ http: // docs.python.org / lib / module - HTMLParser.html).read()) 定義好新的HTMLParser類之後,需要建立一個執行個體來傳回HTMLParser對象。然後,就可以使用urllib.urlopen(url)打開HTML文檔并讀取該HTML檔案的内容了。 為了解析HTML檔案的内容并顯示包含其中的文本,我們可以使用feed(data)函數将資料傳遞給HTMLParser對象。HTMLParser對象的feed函數将接收資料,并通過定義的HTMLParser對象對資料進行相應的解析。要注意的是,如果傳給HTMLParser的feed()函數的資料不完整的話,那麼不完整的标簽會儲存下來,并在下一次調用feed()函數時進行解析。當HTML檔案很大,需要分段發送給解析器的時候,這個功能就會有用武之地了。下面是一個具體的代碼示例: import HTMLParser import urllib urlText = [] # 定義HTML解析器 class parseText(HTMLParser.HTMLParser): def handle_data(self, data): if data != ' \n ' : urlText.append(data) # 建立HTML解析器的執行個體 lParser = parseText() # 把HTML檔案傳給解析器 lParser.feed(urllib.urlopen( \ “http: // docs.python.org / lib / module - HTMLParser.html” \ ).read()) lParser.close() for item in urlText: print item 上面代碼的運作輸出過長,在此略過 |