深度剖析Python模塊的性能問題
Python應用程序被稱為是一門清晰而簡單的語言,因為它的作者當初在設計它的時候,考慮了初學者和一些不經常接觸到這些開發語言的人們來說,這是一門非常好的操作語言。
事實上,通過Python語言提供的各種模塊,我們無需借助Web服務器或者Web瀏覽器就能夠解析和處理HTML文檔。本文將詳細介紹如何利用Python抓取和解析網頁。首先,我們介紹一個可以幫助簡化打開位于本地和Web上的HTML文檔的Python模塊。
然后,我們論述如何使用Python模塊來迅速解析在HTML文件中的數據,從而處理特定的內容,如鏈接、圖像和Cookie等。最后,我們會給出一個規整HTML文件的格式標簽的例子,通過這個例子您會發現使用python處理HTML文件的內容是非常簡單的一件事情。
通過Python所帶的urlparse模塊,我們能夠輕松地把URL分解成元件,之后,還能將這些元件重新組裝成一個URL。當我們處理HTML 文檔的時候,這項功能是非常方便的。函數urlparse(urlstring [, default_scheme [, allow_fragments]])的作用是將URL分解成不同的組成部分。
它從urlstring中取得URL,并返回元組 (scheme, netloc, path, parameters, query, fragment)。注意,返回的這個元組非常有用,例如可以用來確定網絡協議(HTTP、FTP等等 )、服務器地址、文件路徑,等等。
函數urlunparse(tuple)的作用是將URL的組件裝配成一個URL,它接收元組(scheme, netloc, path, parameters, query, fragment)后,會重新組成一個具有正確格式的URL,以便供Python的其他HTML解析模塊使用。函數urljoin(base, url [, allow_fragments]) 的作用是拼接URL,它以第一個參數作為其基地址,然后與第二個參數中的相對地址相結合組成一個絕對URL地址。
函數urljoin在通過為URL基地址附加新的文件名的方式來處理同一位置處的若干文件的時候格外有用。需要注意的是,如果基地址并非以字符/結尾的話。那么URL基地址最右邊部分就會被這個相對路徑所替換。比如,URL的基地址如果希望在該路徑中保留末端目錄,應確保URL基地址以字符/結尾。
上面介紹了如何解析頁面的URL,現在開始講解如何通過URL打開一個網頁。實際上,Python所帶的urllib和urllib2這兩個模塊為我們提供了從URL打開并獲取數據的功能,當然,這包括HTML文檔。若要通過urllib模塊中的urlopen(url [,data])函數打開一個HTML文檔,必須提供該文檔的URL地址,包括文件名。
函數urlopen不僅可以打開位于遠程web服務器上的文件,而且可以打開一個本地文件,并返回一個類似文件的對象,我們可以通過該對象從HTML文檔中讀出數據。一旦打開了HTML文檔,我們就可以像使用常規文件一樣使用read([nbytes])、readline()和readlines()函數來對文件進行讀操作。
另一個常用的函數是位于從urlopen返回的類文件對象中的info()函數,這個函數可以返回URL位置有關的元數據,比如內容長度、內容類型,等等。下面通過一個較為詳細的例子來對這些函數進行說明。
對搜索引擎、文件索引、文檔轉換、數據檢索、站點備份或遷移等應用程序來說,經常用到對網頁(即HTML文件)的解析處理。事實上,通過Python語言提供的各種模塊,我們無需借助Web服務器或者Web瀏覽器就能夠解析和處理HTML文檔。
本文中,我們介紹了一個可以幫助簡化打開位于本地和Web上的HTML文檔的Python模塊。在下篇中,我們將論述如何使用Python模塊來迅速解析在HTML文件中的數據,從而處理特定的內容,如鏈接、圖像和Cookie等。
【編輯推薦】