講述面向對象的語言——Python語言
Python語言確實是一種十分精彩又強大的語言,它合理地結合了高性能與使得編寫程序簡單有趣的特色,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
對搜索引擎、文件索引、文檔轉換、數據檢索、站點備份或遷移等應用程序來說,經常用到對網頁(即HTML文件)的解析處理。事實上,通過Python語言提供的各種模塊,我們無需借助Web服務器或者Web瀏覽器就能夠解析和處理HTML文檔。
本文上篇中,我們介紹了一個可以幫助簡化打開位于本地和Web上的HTML文檔的Python模塊。在本文中,我們將論述如何使用Python模塊來迅速解析在HTML文件中的數據。從而處理特定的內容,如鏈接、圖像和Cookie等。同時還會介紹如何規范HTML文件的格式標簽,Python語言還有一個非常有用的模塊HTMLParser。
該模塊使我們能夠根據HTML文檔中的標簽來簡潔、高效地解析HTML文檔。所以,在處理HTML文檔的時候,HTMLParser是最常用的模塊之一。處理HTML文檔的時候,我們常常需要從其中提取出所有的鏈接。使用HTMLParser模塊后,這項任務將變得易如反掌。
首先,我們需要定義一個新的HTMLParser類,以覆蓋handle_starttag()方法,我們將使用這個方法來顯示所有標簽的HRef屬性值。定義好新的HTMLParser類之后,需要創建一個實例來返回Python語言。然后,就可以使用urllib.urlopen(url)打開HTML文檔并讀取該HTML文件的內容了。
為了解析HTML文件的內容并顯示包含其中的鏈接,可以使用read()函數將數據傳遞給HTMLParser對象。HTMLParser對象的feed函數將接收數據,并通過定義的HTMLParser對象對數據進行相應的解析。
需要注意,如果傳給HTMLParser的feed()函數的數據不完整的話,那么不完整的標簽會保存下來,并在下一次調用feed()函數時進行解析。當HTML文件很大,需要分段發送給解析器的時候,這個功能就會有用武之地了。下面是一個具體的例子。
- import HTMLParser
- import urllib
- import sys
- #定義HTML解析器
- class parseLinks(HTMLParser.HTMLParser):
- def handle_starttag(self, tag, attrs):
- if tag == 'a':
- for name,value in attrs:
- if name == 'href':
- print value
- print self.get_starttag_text()
- #創建HTML解析器的實例
- lParser = parseLinks()
- #打開HTML文件
- lParser.feed(urllib.urlopen( \
- "http://www.python.org/index.html").read())
- lParser.close()
上述代碼的運行結果太長,在此省略,您可以自己運行代碼試試。
【編輯推薦】