urllib.parse — Python 中的 URL 解析元件


此模組提供了一個標準介面,用於將統一資源定位符 (URL) 字串分解為元件,或將元件組合回 URL 字串。它還具有根據“基本 URL”將“相對 URL”轉換為絕對 URL 的函式。

此模組支援以下 URL 方案 -

  • 檔案
  • FTP
  • Gopher
  • HDL
  • HTTP
  • HTTPS
  • IMAP
  • Mailto
  • MMS
  • 新聞
  • NNTP
  • Prospero
  • Rsync
  • RTSP
  • RTSPU
  • SFTP
  • SHTTP
  • SIP
  • Sips
  • Snews
  • SVN
  • SVN+SSH
  • Telnet
  • Wais
  • WS
  • WSS

urlparse()

此函式將 URL 解析為六個元件,並返回一個 6 元組。這對應於 URL 的一般結構。每個元組項都是一個字串。元件不會分解成更小的部分(例如,網路位置是一個單一字串),並且不會擴充套件 % 轉義。返回值是元組子類的例項,由以下屬性組成

屬性索引如果不存在,則為值
方案0URL 方案說明符方案引數
netloc1網路位置部分方案引數
路徑2分層路徑空字串
引數3最後一個路徑元素的引數空字串
查詢4查詢元件空字串
片段5片段識別符號空字串
使用者名稱
使用者名稱
密碼
密碼
主機名
主機名(小寫)

埠號(如果存在)作為整數

示例

>>> from urllib.parse import urlparse
>>> url = 'https://mail.google.com/mail/u/0/?tab = rm#inbox'
>>> t = urlparse(url)
ParseResult(scheme = 'https', netloc = 'mail.google.com', path = '/mail/u/0/', params = '', query = 'tab = rm', fragment = 'inbox')

urlunparse(parts)

此函式根據 urlparse() 返回的元組構造一個 URL。parts 引數可以是任何六項可迭代物件。

>>> from urllib.parse import urlunparse
>>> urlunparse(t)
'https://mail.google.com/mail/u/0/?tab = rm#inbox'

urlsplit(urlstring, scheme = '', allow_fragments = True):

這類似於 urlparse(),但不從 URL 中拆分 params。此函式返回一個 5 元組:(定址方案、網路位置、路徑、查詢、片段識別符號)。

>>> from urllib.parse import urlsplit
>>> urlsplit(url)
SplitResult(scheme = 'https', netloc = 'mail.google.com', path = '/mail/u/0/', query = 'tab = rm', fragment = 'inbox')

urlunsplit(parts)

此函式將 urlsplit() 返回的元組的元素組合成一個完整的 URL(作為字串)。

URL 引用函式專注於獲取程式資料,並透過引用特殊字元和適當地編碼非 ASCII 文字來使其安全地用作 URL 元件。

quote()

此函式使用 %xx 轉義替換字串中的特殊字元。字母、數字以及字元“_.-~”永遠不會被引用。

>>> from urllib.parse import quote
>>> q = quote(url)
'https%3A//mail.google.com/mail/u/0/%3Ftab%3Drm%23inbox'
quote_plus():

與 quote() 類似,但也會將空格替換為加號,這對於在構建 URL 中的查詢字串時引用 HTML 表單值是必需的。

unquote()

此函式將其單字元等效項替換為 %xx 轉義。

>>> from urllib.parse import unquote
>>> unquote(q)
'https://mail.google.com/mail/u/0/?tab = rm#inbox'

urlencode()

此函式將對映物件或一系列兩個元素的元組轉換為百分比編碼的 ASCII 文字字串。生成的字串是由“&”字元分隔的一系列鍵=值對。

>>> from urllib.parse import urlencode
>>> qry = {"name":"Rajeev", "salary":20000}
>>> urlencode(qry)
'name = Rajeev&salary = 20000'

更新於:2019-07-30

7K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.