python3從零學習-5.10.5、urllib—URL 處理模塊

源代碼: Lib/urllib/

urllib 是一個收集了多個用到 URL 的模塊的包:

urllib.request 打開和讀取 URL

urllib.error 包含 urllib.request 拋出的異常

urllib.parse 用於解析 URL

urllib.robotparser 用於解析 robots.txt 文件

源碼: Lib/urllib/request.py

urllib.request 模塊定義了適用於在各種複雜情況下打開 URL(主要爲 HTTP)的函數和類 — 例如基本認證、摘要認證、重定向、cookies 及其它。

 

urllib.request 模塊定義了以下函數:

 

  • urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)¶

打開統一資源定位地址 url,可以是一個字符串或一個 Request 對象。

 

  • urllib.request.install_opener(opener)

安裝OpenerDirector實例作爲默認全局打開器。安裝一個開啓器是必要的,如果你想urlopen使用該開啓器;否則,只需調用OpenerDirector.open()而不是urlopen()。代碼沒有檢查真正的OpenerDirector,任何具有適當接口的類都可以工作。

 

  • urllib.request.build_opener([handler, ...])

返回一個OpenerDirector實例,該實例按照給定的順序連接處理程序。處理程序可以是BaseHandler的實例,也可以是BaseHandler的子類(在這種情況下,必須能夠不使用任何參數調用構造函數)。ProxyHandler(如果檢測到代理設置),UnknownHandler, HTTPHandler, HTTPDefaultErrorHandler, HTTPRedirectHandler, FTPHandler, FileHandler, HTTPErrorProcessor。

 

  • urllib.request.pathname2url(path)

將路徑名路徑從路徑的本地語法轉換爲URL的路徑組件中使用的形式。這不會產生一個完整的URL。返回值已經被quote()函數括起來了。

 

  • urllib.request.url2pathname(path)

將路徑組件路徑從按百分比編碼的URL轉換爲路徑的本地語法。這不能接受完整的URL。這個函數使用unquote()來解碼路徑。

 

  • urllib.request.getproxies()

這個helper函數將scheme的字典返回給代理服務器URL映射。它掃描環境中的變量<scheme>_proxy,在不區分大小寫的方法中,首先掃描所有操作系統,如果找不到它,就從Mac OSX系統配置和Windows系統註冊表中查找代理信息。如果同時存在小寫和大寫環境變量(且不一致),則首選小寫。

 

  • class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)¶

這個類是URL請求的抽象。

 

  • class urllib.request.OpenerDirector

OpenerDirector類通過鏈接在一起的BaseHandlers打開url。它管理處理程序的鏈接,並從錯誤中恢復。

 

  • class urllib.request.BaseHandler

這是所有註冊處理程序的基類——只處理註冊的簡單機制。

 

  • class urllib.request.HTTPDefaultErrorHandler

定義HTTP錯誤響應的默認處理程序的類;所有響應都被轉化爲HTTPError異常。

 

  • class urllib.request.HTTPRedirectHandler

一個用於處理重定向的類。

 

  • class urllib.request.HTTPCookieProcessor(cookiejar=None)

一個用於處理 HTTP Cookies 的類。

 

  • class urllib.request.ProxyHandler(proxies=None)

導致請求通過代理。如果指定了代理,它必須是映射協議名稱到代理的url的字典。默認情況下從環境變量<protocol>_proxy中讀取代理列表。如果沒有設置代理環境變量,那麼在Windows環境中,從註冊表的Internet設置部分獲取代理設置,在Mac OS X環境中,從OS X系統配置框架獲取代理信息。

 

  • class urllib.request.HTTPPasswordMgr

保持數據庫的(域,uri) ->(用戶,密碼)映射。

 

  • class urllib.request.HTTPPasswordMgrWithDefaultRealm

保持數據庫的(域,uri) ->(用戶,密碼)映射。None的領域被認爲是all -all領域,如果沒有其他領域符合該領域,則對其進行搜索。

 

  • class urllib.request.HTTPPasswordMgrWithPriorAuth

HTTPPasswordMgrWithDefaultRealm的一個變體,它也有一個uri -> is_authenticated映射的數據庫。可以被BasicAuth處理程序用於確定何時立即發送身份驗證憑據,而不是首先等待401響應。

 

  • class urllib.request.HTTPHandler

處理打開HTTP url的類。

 

  • class urllib.request.HTTPSHandler(debuglevel=0, context=None, check_hostname=None)

處理HTTPS url打開的類。上下文和check_hostname與http.client.HTTPSConnection中的含義相同。

 

  • class urllib.request.FileHandler

打開本地文件。

 

  • class urllib.request.DataHandler

開放數據的url。

 

  • class urllib.request.FTPHandler

打開 FTP 統一資源定位地址。

 

  • class urllib.request.CacheFTPHandler

打開FTP url,保持打開FTP連接的緩存以最小化延遲。

 

  • class urllib.request.UnknownHandler

用於處理未知url的all類。

 

  • class urllib.request.HTTPErrorProcessor

處理HTTP錯誤響應。

Request 對象

 

下面的方法描述了Request的公共接口,因此所有這些方法都可以在子類中被覆蓋。它還定義了幾個公共屬性,客戶機可以使用這些屬性檢查解析後的請求。

 

  • Request.full_url

傳給構造函數的原始 URL。

 

  • Request.type

The URI scheme.

 

  • Request.host

URI權限,通常是主機,但也可能包含一個由冒號分隔的端口。

 

  • Request.origin_req_host

請求的原始主機,不含端口。

 

  • Request.selector

URI 路徑。若 Request 使用代理,選擇器將會是傳給代理的完整 URL。

 

  • Request.data

The entity body for the request, or None if not specified.

 

  • Request.unverifiable

布爾,表明請求是否爲 RFC 2965 中定義的無法證實的。

 

  • Request.method

要使用的HTTP請求方法。默認情況下,它的值是None,這意味着get_method()將對要使用的方法進行常規計算。它的值可以通過在請求子類的類級別上設置默認值來設置(從而覆蓋get_method()中的默認計算),或者通過方法參數向請求構造函數傳遞一個值。

 

  • Request.get_method()

返回一個指示HTTP請求方法的字符串。如果請求。方法不是None,返回它的值,否則返回'GET'如果請求。data是None,或者“POST”(如果不是的話)。這隻對HTTP請求有意義。

在 3.3 版更改: get_method now looks at the value of Request.method.

 

  • Request.add_header(key, val)

向請求添加另一個頭。目前,除了HTTP處理程序外,所有處理程序都忽略了頭,在HTTP處理程序中,頭被添加到發送到服務器的頭列表中。注意,不能有多個頭具有相同的名稱,並且以後的調用將覆蓋以前的調用,以防鍵衝突。目前,這不是HTTP功能的損失,因爲當使用超過一次有意義的所有頭有一個(特定的頭)方式獲得相同的功能使用一個頭。

 

  • Request.add_unredirected_header(key, header)

添加一個不會被加入重定向請求的頭部。

 

  • Request.has_header(header)

返回實例是否有命名頭(檢查常規的和未重定向的)。

 

  • Request.remove_header(header)

從請求實例中刪除命名頭(包括常規頭和未重定向頭)。

 

  • Request.get_full_url()

返回構造器中給定的 URL。

返回 Request.full_url

 

  • Request.set_proxy(host, type)

通過連接到代理服務器準備請求。主機和類型將替換實例的主機和類型,實例的選擇器將是構造函數中給出的原始URL。

 

  • Request.get_header(header_name, default=None)

返回給定標頭的值。如果標題不存在,則返回默認值。

 

  • Request.header_items()

返回請求頭的元組列表(header_name, header_value)。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章