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














 
 



 