官方文檔鏈接:https://docs.python.org/3/library/urllib.request.html
urllib.request定義了以下函數:
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
參數:
打開url鏈接,可以是字符串或者是Request對象。
data必須是一個定義了向服務器所發送額外數據的對象,或者如果沒有必要數據的話,就是None值。可以查閱Request獲取詳細信息。
url.request模塊在HTTP請求中使用了HTTP/1.1,並且包含了Connection:close頭部。
可選的timeout參數指定阻止諸如連接嘗試等操作的超時時間(以秒為單位)(如果未指定,將使用全局默認超時設置)。這實際上只適用於HTTP,HTTPS和FTP連接。
如果指定了context,則它必須是描述各種SSL選項的ssl.SSLContext實例。 有關更多詳細信息,請參閱HTTPSConnection。
可選的cafile和capath參數為HTTPS請求指定一組可信的CA證書。 cafile應指向包含一系列CA證書的單個文件,而capath應指向散列證書文件的目錄。 更多信息可以在ssl.SSLContext.load_verify_locations()中找到。
cadefault參數被忽略。
返回值:
該函數總是返回一個可以作為context manager使用的對象,並且具有方法,例如;
geturl()-返回檢索的資源的URL,通常用於確定是否遵循重定向;
info()-以email.message_from_string()實例的形式返回頁面的元信息(如headers)(可快速參考HTTP Headers);
getcode()-返回響應的HTTP狀態碼。
對於HTTP和HTTPS URL,此函數返回稍微修改的http.client.HTTPResponse對象。 除上述三種新方法之外,msg屬性還包含與reason屬性(服務器返回的原因短語)相同的信息,而不是HTTPResponse文檔中指定的響應標頭。
對於由傳統URLopener和FancyURLopener類明確處理的FTP,文件和數據URL和請求,此函數返回一個urllib.response.addinfourl對象。
在協議錯誤上引發URLError。
請注意,如果沒有處理請求的handler,則可能返回None(盡管默認安裝的全局OpenerDirector使用UnknownHandler來確保永不發生這種情況)。
另外,如果檢測到代理設置(例如,如果設置了諸如http_proxy的* _proxy環境變量),則默認安裝ProxyHandler,並確保通過代理處理請求。
來自Python 2.6及更早版本的遺留urllib.urlopen函數已停止使用; urllib.request.urlopen()對應於舊的urllib2.urlopen。 通過使用ProxyHandler對象可以獲得通過將字典參數傳遞給urllib.urlopen完成的代理處理。