2019年12月13日 星期五

urllib.request 功用(1)

urllib.request 用法(1)


範例程式
import urllib.request

url = 'http://www.baidu.com/'
response = urllib.request.urlopen(url)

print(type(response))

print(response.status)         # 獲取狀態碼
print(response.info())          # 獲取回應頭
print(response.getcode())   # 獲取狀態碼
print(response.geturl())      # 獲取URL

print(response.read().decode('utf8'))
with open('baidu.html', 'wb') as f:
    f.write(response.read())

-------------------------------------顥示結果 前 2項-------------------------------------------------------------

type(response) =  <class 'http.client.HTTPResponse'>
response.status =  200

===================================================================

urllib.request—用於打開URL的可擴展庫

urllib.request模塊定義了有助於在復雜環境中打開URL(主要是HTTP)的函數和類-基本身份驗證和摘要身份驗證,重定向,Cookie等。


urllib.request模塊定義了以下功能:
urllib.request.urlopenurldata = Nonetimeout*cafile = Nonecapath = Nonecadefault = Falsecontext = None 
打開URL url,它可以是字符串或 Request對象。
數據必須是一個指定要發送到服務器的其他數據的對象,或者None如果不需要這種數據。有關Request 詳細信息,請參見。
urllib.request模塊使用HTTP / 1.1,並Connection:close在其HTTP請求中包含標頭。

可選的timeout參數以秒為單位指定用於阻止諸如連接嘗試之類的操作的超時(如果未指定,將使用全局默認超時設置)。這實際上僅適用於HTTP,HTTPS和FTP連接。

如果指定了上下文,則它必須是ssl.SSLContext描述各種SSL選項的實例。請參閱HTTPSConnection 以獲取更多詳細信息。

可選的cafilecapath參數為HTTPS請求指定一組受信任的CA證書。 cafile應該指向包含一堆 CA證書的單個文件,而capath應該指向哈希證書文件的目錄。可以在中找到更多信息ssl.SSLContext.load_verify_locations()。

該cadefault參數被忽略。

函數總是返回一個可以用作上下文管理器的對象, 並具有諸如
  • geturl() —返回所獲取資源的URL,通常用於確定是否遵循了重定向
  • info()—以email.message_from_string()實例的形式返回頁面的元信息,例如標頭(請參閱 HTTP標頭快速參考)。
  • getcode() –返迴響應的HTTP狀態代碼。
對於HTTP和HTTPS URL,此函數返回一個http.client.HTTPResponse稍作修改的 對象。除了上述三個新方法外,msg屬性包含與屬性相同的信息reason (服務器返回的原因短語),而不是文檔中指定的響應標頭 HTTPResponse。

對於由舊版URLopener和FancyURLopener類顯式處理的FTP,文件和數據URL以及請求 ,此函數返回一個urllib.response.addinfourl對象。

引發URLError協議錯誤。

請注意,None如果沒有處理程序處理該請求,則可能會返回該值(儘管默認安裝的全局OpenerDirector用法 UnknownHandler可確保永遠不會發生此情況)。

此外,如果檢測到代理設置(例如,當*_proxy 類似http_proxy已設置), ProxyHandler默認安裝,並確保通過代理處理請求。

urllib.urlopenPython 2.6和更早版本的舊版功能已停產;urllib.request.urlopen()對應於舊的 urllib2.urlopen。urllib.urlopen可以通過使用ProxyHandler對象獲得通過 將字典參數傳遞給來完成的代理處理。

首戰提出了一個默認的審計事件 urllib.Request帶參數fullurl,data,headers, method從請求對象獲取。

在版本3.2中更改:添加了cafile和capath。
在版本3.2中進行了更改:如果可能(如果ssl.HAS_SNI為true),現在支持HTTPS虛擬主機 。

3.2版中的新功能:數據可以是可迭代的對象。
在版本3.3中更改:添加了cadefault。
在版本3.4.3中更改:添加了上下文。
自版本3.6起不推薦使用:不推薦使用cafile,capath和cadefault,而推薦使用context。請ssl.SSLContext.load_cert_chain()改用,或者讓 ssl.create_default_context()您為您選擇系統的受信任CA證書。

沒有留言:

張貼留言

print(dir(urllib.request.urlopen(url))) 實作

import urllib.request url = 'http://www.baidu.com/' response = urllib.request.urlopen(url) print(type(response)) print(dir(...