本文基於Python3分享urllib模塊的源碼分享,所以不要拿這python2來問我為什麼找不到對應的源碼。
在python3中urllib由以下幾個模塊構成:
parse
request
response
robotparser
error
下面對這個幾個模塊進行一一分享。
parse模塊parse模塊定義了統一的接口並實現了URL解析和引用功能。
簡單的理解:parse模塊可以把url進行拆分或組合,下面我們看下示例:
__author__ = "苦葉子"
from urllib.parse import urlparse
if __name__ == "__main__": print("urllib url切割實例") url = "http://username:password@www.baidu.com:80/q=開源優測" result = urlparse(url) print("看下切割後的整體結果: ") print(result) print("協議: ", result.scheme) print("連接字符串:", result.netloc) print("埠號:", result.port) print("uri資源:", result.path) print("用戶名:", result.username) print("密碼:", result.password)
通過上述實例,我們將學會如何將url中各個屬性進行切割出來。
對於parse模塊其他的功能,本文就不一一演示了,請參見官網學習。
requset模塊這個模塊可以說是urllib最核心的模塊了,其定義了系列函數、類用於實現http/https相關協議功能。
下面我們看一個最問簡單的應用實例,後續結合實際的API進行深入實例演示:
__author__ = "苦葉子"
import urllib.request
if __name__ == "__main__": print("讀取www.python.org首頁的html源碼") response = urllib.request.urlopen("http://www.python.org") print("列印下結果") print(response.read())
通過運行上述代碼,將會在console看到一堆的html源碼的輸出顯示。
request模塊有著非常強大的功能,後續專門開闢一篇文章來分享。
response模塊response模塊比較簡單,其定義了http response基本出來方法,作為基類存在,大家有興趣的可以研究下其源碼,了解去編碼風格及實現,有利於深入掌握如何處理http的返回值。
這裡不做實例演示,因為其提供的方法、功能主要在request模塊中進行了應用。
robotparser模塊robotparser模塊提供了一個單獨的類:robotfileparser,用於處理robot.txt文件。
至於這個文件是幹嘛用的你可以訪問:http://www.robotstxt.org/norobots-rfc.txt 進行了解、學習。
當你需要研究爬蟲時,這個robots.txt是必須深入研究的東西。
error模塊error模塊定義了url、http相關的錯誤基類,總共不到100行代碼,很簡潔,這裡就不做說明了。
小結本文簡要的對urllib的組成進行了說明,後續結合實例進行演示分享,大家先通過本文了解下就好