urllib.parse 用于解析 URL?
源代碼: Lib/urllib/parse.py
該模塊定義了一個標(biāo)準(zhǔn)接口,用于URL字符串按組件(協(xié)議、網(wǎng)絡(luò)位置、路徑等)分解,或?qū)⒔M件組合回URL字符串,并將 "相對URL "轉(zhuǎn)換為給定 "基礎(chǔ)URL "的絕對URL。
The module has been designed to match the Internet RFC on Relative Uniform
Resource Locators. It supports the following URL schemes: file, ftp,
gopher, hdl, http, https, imap, mailto, mms,
news, nntp, prospero, rsync, rtsp, rtspu, sftp,
shttp, sip, sips, snews, svn, svn+ssh, telnet,
wais, ws, wss.
urllib.parse 模塊定義的函數(shù)可分為兩個主要門類: URL 解析和 URL 轉(zhuǎn)碼。 這些函數(shù)將在以下各節(jié)中詳細(xì)說明。
URL 解析?
URL解析功能可以將一個URL字符串分割成其組件,或者將URL組件組合成一個URL字符串。
-
urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)? Parse a URL into six components, returning a 6-item named tuple. This corresponds to the general structure of a URL:
scheme://netloc/path;parameters?query#fragment. Each tuple item is a string, possibly empty. The components are not broken up in smaller parts (for example, the network location is a single string), and % escapes are not expanded. The delimiters as shown above are not part of the result, except for a leading slash in the path component, which is retained if present. For example:>>> from urllib.parse import urlparse >>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html') >>> o ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='') >>> o.scheme 'http' >>> o.port 80 >>> o.geturl() 'http://www.cwi.nl:80/%7Eguido/Python.html'
根據(jù) RFC 1808 中的語法規(guī)范,urlparse 僅在 netloc 前面正確地附帶了 '//' 的情況下才會識別它。 否則輸入會被當(dāng)作是一個相對 URL 因而以路徑的組成部分開頭。
>>> from urllib.parse import urlparse >>> urlparse('//www.cwi.nl:80/%7Eguido/Python.html') ParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='') >>> urlparse('www.cwi.nl/%7Eguido/Python.html') ParseResult(scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment='') >>> urlparse('help/Python.html') ParseResult(scheme='', netloc='', path='help/Python.html', params='', query='', fragment='')
scheme 參數(shù)給出了默認(rèn)的協(xié)議,只有在 URL 未指定協(xié)議的情況下才會被使用。 它應(yīng)該是與 urlstring 相同的類型(文本或字節(jié)串),除此之外默認(rèn)值
''也總是被允許,并會在適當(dāng)情況下自動轉(zhuǎn)換為b''。如果 allow_fragments 參數(shù)為假值,則片段標(biāo)識符不會被識別。 它們會被解析為路徑、參數(shù)或查詢部分,在返回值中
fragment會被設(shè)為空字符串。返回值是一個 named tuple,這意味著它的條目可以通過索引或作為命名屬性來訪問,這些屬性是:
屬性
索引
值
值(如果不存在)
scheme0
URL方案說明符
scheme parameter
netloc1
網(wǎng)絡(luò)位置部分
空字符串
path2
分層路徑
空字符串
params3
最后路徑元素的參數(shù)
空字符串
query4
查詢組件
空字符串
fragment5
片段識別
空字符串
username用戶名
password密碼
hostname主機(jī)名(小寫)
port端口號為整數(shù)(如果存在)
如果在 URL 中指定了無效的端口,讀取
port屬性將引發(fā)ValueError。 有關(guān)結(jié)果對象的更多信息請參閱 結(jié)構(gòu)化解析結(jié)果 一節(jié)。在
netloc屬性中不匹配的方括號將引發(fā)ValueError。如果
netloc屬性中的字符在 NFKC 規(guī)范化下(如 IDNA 編碼格式所使用的)被分解成/,?,#,@或:則將引發(fā)ValueError。 如果在解析之前 URL 就被分解,則不會引發(fā)錯誤。與所有具名元組的情況一樣,該子類還有一些特別有用的附加方法和屬性。 其中一個方法是
_replace()。_replace()方法將返回一個新的 ParseResult 對象來將指定字段替換為新的值。>>> from urllib.parse import urlparse >>> u = urlparse('//www.cwi.nl:80/%7Eguido/Python.html') >>> u ParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='') >>> u._replace(scheme='http') ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='')
在 3.2 版更改: 添加了IPv6 URL解析功能。
在 3.3 版更改: The fragment is now parsed for all URL schemes (unless allow_fragment is false), in accordance with RFC 3986. Previously, a whitelist of schemes that support fragments existed.
在 3.6 版更改: 超范圍的端口號現(xiàn)在會引發(fā)
ValueError,而不是返回None。在 3.7.3 版更改: 在 NFKC 規(guī)范化下會影響 netloc 解析的字符現(xiàn)在將引發(fā)
ValueError。
-
urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&')? 解析以字符串參數(shù)形式(類型為 application/x-www-form-urlencoded 的數(shù)據(jù))給出的查詢字符串。 返回字典形式的數(shù)據(jù)。 結(jié)果字典的鍵為唯一的查詢變量名而值為每個變量名對應(yīng)的值列表。
可選參數(shù) keep_blank_values 是一個旗標(biāo),指明是否要將以百分號轉(zhuǎn)碼的空值作為空字符串處理。 真值表示空值應(yīng)當(dāng)被保留作為空字符串。 默認(rèn)的假值表示空值會被忽略并將其視作未包括的值。
可選參數(shù) strict_parsing 是一個旗標(biāo),指明要如何處理解析錯誤。 如為假值(默認(rèn)),錯誤會被靜默地忽略。 如為真值,錯誤會引發(fā)
ValueError異常。可選的 encoding 和 errors 形參指定如何將以百分號編碼的序列解碼為 Unicode 字符,即作為
bytes.decode()方法所接受的數(shù)據(jù)。可選參數(shù) max_num_fields 是要讀取的最大字段數(shù)量的。 如果設(shè)置,則如果讀取的字段超過 max_num_fields 會引發(fā)
ValueError。可選參數(shù) separator 是用來分隔查詢參數(shù)的符號。 默認(rèn)為
&。使用
urllib.parse.urlencode()函數(shù) (并將doseq形參設(shè)為True) 將這樣的字典轉(zhuǎn)換為查詢字符串。.在 3.2 版更改: 增加了 encoding 和 errors 形參。
在 3.7.2 版更改: 增加了 max_num_fields 形參。
在 3.7.10 版更改: Added separator parameter with the default value of
&. Python versions earlier than Python 3.7.10 allowed using both;and&as query parameter separator. This has been changed to allow only a single separator key, with&as the default separator.
-
urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&')? 解析以字符串參數(shù)形式(類型為 application/x-www-form-urlencoded 的數(shù)據(jù))給出的查詢字符串。 數(shù)據(jù)以字段名和字段值對列表的形式返回。
可選參數(shù) keep_blank_values 是一個旗標(biāo),指明是否要將以百分號轉(zhuǎn)碼的空值作為空字符串處理。 真值表示空值應(yīng)當(dāng)被保留作為空字符串。 默認(rèn)的假值表示空值會被忽略并將其視作未包括的值。
可選參數(shù) strict_parsing 是一個旗標(biāo),指明要如何處理解析錯誤。 如為假值(默認(rèn)),錯誤會被靜默地忽略。 如為真值,錯誤會引發(fā)
ValueError異常。可選的 encoding 和 errors 形參指定如何將以百分號編碼的序列解碼為 Unicode 字符,即作為
bytes.decode()方法所接受的數(shù)據(jù)。可選參數(shù) max_num_fields 是要讀取的最大字段數(shù)量的。 如果設(shè)置,則如果讀取的字段超過 max_num_fields 會引發(fā)
ValueError。可選參數(shù) separator 是用來分隔查詢參數(shù)的符號。 默認(rèn)為
&。使用
urllib.parse.urlencode()函數(shù)將這樣的名值對列表轉(zhuǎn)換為查詢字符串。在 3.2 版更改: 增加了 encoding 和 errors 形參。
在 3.7.2 版更改: 增加了 max_num_fields 形參。
在 3.7.10 版更改: Added separator parameter with the default value of
&. Python versions earlier than Python 3.7.10 allowed using both;and&as query parameter separator. This has been changed to allow only a single separator key, with&as the default separator.
-
urllib.parse.urlunparse(parts)? 根據(jù)
urlparse()所返回的元組來構(gòu)造一個 URL。 parts 參數(shù)可以是任何包含六個條目的可迭代對象。 構(gòu)造的結(jié)果可能是略有不同但保持等價的 URL,如果被解析的 URL 原本包含不必要的分隔符(例如,帶有空查詢的?;RFC 已聲明這是等價的)。
-
urllib.parse.urlsplit(urlstring, scheme='', allow_fragments=True)? 此函數(shù)類似于
urlparse(),但不會拆分來自 URL 的參數(shù)。 此函數(shù)通常應(yīng)當(dāng)在需要允許將參數(shù)應(yīng)用到 URL 的 path 部分的每個分節(jié)的較新的 URL 語法的情況下 (參見 RFC 2396) 被用來代替urlparse()。 需要使用一個拆分函數(shù)來拆分路徑分節(jié)和參數(shù)。 此函數(shù)將返回包含 5 個條目的 named tuple:(addressing scheme, network location, path, query, fragment identifier).
返回值是一個 named tuple,它的條目可以通過索引或作為命名屬性來訪問:
屬性
索引
值
值(如果不存在)
scheme0
URL方案說明符
scheme parameter
netloc1
網(wǎng)絡(luò)位置部分
空字符串
path2
分層路徑
空字符串
query3
查詢組件
空字符串
fragment4
片段識別
空字符串
username用戶名
password密碼
hostname主機(jī)名(小寫)
port端口號為整數(shù)(如果存在)
如果在 URL 中指定了無效的端口,讀取
port屬性將引發(fā)ValueError。 有關(guān)結(jié)果對象的更多信息請參閱 結(jié)構(gòu)化解析結(jié)果 一節(jié)。在
netloc屬性中不匹配的方括號將引發(fā)ValueError。如果
netloc屬性中的字符在 NFKC 規(guī)范化下(如 IDNA 編碼格式所使用的)被分解成/,?,#,@或:則將引發(fā)ValueError。 如果在解析之前 URL 就被分解,則不會引發(fā)錯誤。依據(jù)更新 RFC 3986 的 WHATWG spec,ASCII 換行符
\n,\r和制表符\t等字符會從 URL 中被去除。在 3.6 版更改: 超范圍的端口號現(xiàn)在會引發(fā)
ValueError,而不是返回None。在 3.7.3 版更改: 在 NFKC 規(guī)范化下會影響 netloc 解析的字符現(xiàn)在將引發(fā)
ValueError。在 3.7.11 版更改: ASCII 換行符和制表符會從 URL 中被去除。
-
urllib.parse.urlunsplit(parts)? 將
urlsplit()所返回的元組中的元素合并為一個字符串形式的完整 URL。 parts 參數(shù)可以是任何包含五個條目的可迭代對象。 其結(jié)果可能是略有不同但保持等價的 URL,如果被解析的 URL 原本包含不必要的分隔符(例如,帶有空查詢的 ?;RFC 已聲明這是等價的)。
-
urllib.parse.urljoin(base, url, allow_fragments=True)? 通過合并一個 "基準(zhǔn) URL" (base) 和另一個 URL (url) 來構(gòu)造一個完整 ("absolute") URL。 在非正式情況下,這將使用基準(zhǔn) URL 的各部分,特別是地址協(xié)議、網(wǎng)絡(luò)位置和 (一部分) 路徑來提供相對 URL 中缺失的部分。 例如:
>>> from urllib.parse import urljoin >>> urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html') 'http://www.cwi.nl/%7Eguido/FAQ.html'
allow_fragments 參數(shù)具有與
urlparse()中的對應(yīng)參數(shù)一致的含義與默認(rèn)值。注解
If url is an absolute URL (that is, starting with
//orscheme://), the url's host name and/or scheme will be present in the result. For example:>>> urljoin('http://www.cwi.nl/%7Eguido/Python.html', ... '//www.python.org/%7Eguido') 'http://www.python.org/%7Eguido'
如果你不想要那樣的行為,請使用
urlsplit()和urlunsplit()對 url 進(jìn)行預(yù)處理,移除可能存在的 scheme 和 netloc 部分。在 3.5 版更改: Behaviour updated to match the semantics defined in RFC 3986.
-
urllib.parse.urldefrag(url)? 如果 url 包含片段標(biāo)識符,則返回不帶片段標(biāo)識符的 url 修改版本。 如果 url 中沒有片段標(biāo)識符,則返回未經(jīng)修改的 url 和一個空字符串。
返回值是一個 named tuple,它的條目可以通過索引或作為命名屬性來訪問:
屬性
索引
值
值(如果不存在)
url0
不帶片段的 URL
空字符串
fragment1
片段識別
空字符串
請參閱 結(jié)構(gòu)化解析結(jié)果 一節(jié)了解有關(guān)結(jié)果對象的更多信息。
在 3.2 版更改: 結(jié)果為已構(gòu)造好的對象而不是一個簡單的 2 元組。-tuple.
解析ASCII編碼字節(jié)?
這些 URL 解析函數(shù)最初設(shè)計只用于操作字符串。 但在實踐中,它也能夠操作經(jīng)過正確轉(zhuǎn)碼和編碼的 ASCII 字節(jié)序列形式的 URL。 相應(yīng)地,此模塊中的 URL 解析函數(shù)既可以操作 str 對象也可以操作 bytes 和 bytearray 對象。
如果傳入 str 數(shù)據(jù),結(jié)果將只包含 str 數(shù)據(jù)。 如果傳入 bytes 或 bytearray 數(shù)據(jù),則結(jié)果也將只包含 bytes 數(shù)據(jù)。
試圖在單個函數(shù)調(diào)用中混用 str 數(shù)據(jù)和 bytes 或 bytearray 數(shù)據(jù)將導(dǎo)致引發(fā) TypeError,而試圖傳入非 ASCII 字節(jié)值則將引發(fā) UnicodeDecodeError。
為了支持結(jié)果對象在 str 和 bytes 之間方便地轉(zhuǎn)換,所有來自 URL 解析函數(shù)的返回值都會提供 encode() 方法 (當(dāng)結(jié)果包含 str 數(shù)據(jù)) 或 decode() 方法 (當(dāng)結(jié)果包含 bytes 數(shù)據(jù))。 這些方法的簽名與 str 和 bytes 的對應(yīng)方法相匹配 (不同之處在于其默認(rèn)編碼格式是 'ascii' 而非 'utf-8')。 每個方法會輸出包含相應(yīng)類型的 bytes 數(shù)據(jù) (對于 encode() 方法) 或 str 數(shù)據(jù) (對于 decode() 方法) 的值。
對于某些需要在有可能不正確地轉(zhuǎn)碼的包含非 ASCII 數(shù)據(jù)的 URL 上進(jìn)行操作的應(yīng)用程序來說,在發(fā)起調(diào)用 URL 解析方法之前必須自行將字節(jié)串解碼為字符。
在本節(jié)中描述的行為僅適用于 URL 解析函數(shù)。 URL 轉(zhuǎn)碼函數(shù)在產(chǎn)生和消耗字節(jié)序列時使用它們自己的規(guī)則,詳情參見單獨(dú) URL 轉(zhuǎn)碼函數(shù)的文檔。
在 3.2 版更改: URL 解析函數(shù)現(xiàn)在接受 ASCII 編碼的字節(jié)序列
結(jié)構(gòu)化解析結(jié)果?
urlparse(), urlsplit() 和 urldefrag() 函數(shù)的結(jié)果對象是 tuple 類型的子類。 這些子類中增加了在那些函數(shù)的文檔中列出的屬性,之前小節(jié)中描述的編碼和解碼支持,以及一個附加方法:
-
urllib.parse.SplitResult.geturl()? 以字符串形式返回原始 URL 的重合并版本。 這可能與原始 URL 有所不同,例如協(xié)議的名稱可能被正規(guī)化為小寫字母、空的組成部分可能被丟棄。 特別地,空的參數(shù)、查詢和片段標(biāo)識符將會被移除。
對于
urldefrag()的結(jié)果,只有空的片段標(biāo)識符會被移除。 對于urlsplit()和urlparse()的結(jié)果,所有被記錄的改變都會被應(yīng)用到此方法所返回的 URL 上。如果是通過原始的解析方法傳回則此方法的結(jié)果會保持不變:
>>> from urllib.parse import urlsplit >>> url = 'HTTP://www.Python.org/doc/#' >>> r1 = urlsplit(url) >>> r1.geturl() 'http://www.Python.org/doc/' >>> r2 = urlsplit(r1.geturl()) >>> r2.geturl() 'http://www.Python.org/doc/'
下面的類提供了當(dāng)在 str 對象上操作時對結(jié)構(gòu)化解析結(jié)果的實現(xiàn):
-
class
urllib.parse.DefragResult(url, fragment)? 用于
urldefrag()結(jié)果的實體類,包含有str數(shù)據(jù)。encode()方法會返回一個DefragResultBytes實例。3.2 新版功能.
-
class
urllib.parse.ParseResult(scheme, netloc, path, params, query, fragment)? 用于
urlparse()結(jié)果的實體類,包含有str數(shù)據(jù)。encode()方法會返回一個ParseResultBytes實例。
-
class
urllib.parse.SplitResult(scheme, netloc, path, query, fragment)? 用于
urlsplit()結(jié)果的實體類,包含有str數(shù)據(jù)。encode()方法會返回一個SplitResultBytes實例。
下面的類提供了當(dāng)在 bytes 或 bytearray 對象上操作時對解析結(jié)果的實現(xiàn):
-
class
urllib.parse.DefragResultBytes(url, fragment)? 用于
urldefrag()結(jié)果的實體類,包含有bytes數(shù)據(jù)。decode()方法會返回一個DefragResult實例。3.2 新版功能.
-
class
urllib.parse.ParseResultBytes(scheme, netloc, path, params, query, fragment)? 用于
urlparse()結(jié)果的實體類,包含有bytes數(shù)據(jù)。decode()方法會返回一個ParseResult實例。3.2 新版功能.
-
class
urllib.parse.SplitResultBytes(scheme, netloc, path, query, fragment)? 用于
urlsplit()結(jié)果的實體類,包含有bytes數(shù)據(jù)。decode()方法會返回一個SplitResult實例。3.2 新版功能.
URL 轉(zhuǎn)碼?
URL 轉(zhuǎn)碼函數(shù)的功能是接收程序數(shù)據(jù)并通過對特殊字符進(jìn)行轉(zhuǎn)碼并正確編碼非 ASCII 文本來將其轉(zhuǎn)為可以安全地用作 URL 組成部分的形式。 它們還支持逆轉(zhuǎn)此操作以便從作為 URL 組成部分的內(nèi)容中重建原始數(shù)據(jù),如果上述的 URL 解析函數(shù)還未覆蓋此功能的話。
-
urllib.parse.quote(string, safe='/', encoding=None, errors=None)? Replace special characters in string using the
%xxescape. Letters, digits, and the characters'_.-~'are never quoted. By default, this function is intended for quoting the path section of URL. The optional safe parameter specifies additional ASCII characters that should not be quoted --- its default value is'/'.string may be either a
stror abytes.可選的 encoding 和 errors 形參指明如何處理非 ASCII 字符,與
str.encode()方法所接受的值一樣。 encoding 默認(rèn)為'utf-8'。 errors 默認(rèn)為'strict',表示不受支持的字符將引發(fā)UnicodeEncodeError。 如果 string 為bytes則不可提供 encoding 和 errors,否則將引發(fā)TypeError。請注意
quote(string, safe, encoding, errors)等價于quote_from_bytes(string.encode(encoding, errors), safe)。例如:
quote('/El Ni?o/')將產(chǎn)生'/El%20Ni%C3%B1o/'.
-
urllib.parse.quote_plus(string, safe='', encoding=None, errors=None)? Like
quote(), but also replace spaces by plus signs, as required for quoting HTML form values when building up a query string to go into a URL. Plus signs in the original string are escaped unless they are included in safe. It also does not have safe default to'/'.例如:
quote_plus('/El Ni?o/')將產(chǎn)生'%2FEl+Ni%C3%B1o%2F'。
-
urllib.parse.quote_from_bytes(bytes, safe='/')? 類似于
quote(),但是接受bytes對象而非str,并且不執(zhí)行從字符串到字節(jié)串的編碼。例如:
quote_from_bytes(b'a&\xef')產(chǎn)生'a%26%EF'。
-
urllib.parse.unquote(string, encoding='utf-8', errors='replace')? Replace
%xxescapes by their single-character equivalent. The optional encoding and errors parameters specify how to decode percent-encoded sequences into Unicode characters, as accepted by thebytes.decode()method.string 必須為
str。encoding 默認(rèn)為
'utf-8'。 errors 默認(rèn)為'replace',表示無效的序列將被替換為占位字符。例如:
unquote('/El%20Ni%C3%B1o/')將產(chǎn)生'/El Ni?o/'。
-
urllib.parse.unquote_plus(string, encoding='utf-8', errors='replace')? Like
unquote(), but also replace plus signs by spaces, as required for unquoting HTML form values.string 必須為
str。例如:
unquote_plus('/El+Ni%C3%B1o/')將產(chǎn)生'/El Ni?o/'。
-
urllib.parse.unquote_to_bytes(string)? Replace
%xxescapes by their single-octet equivalent, and return abytesobject.string may be either a
stror abytes.如果它是
str,則 string 中未轉(zhuǎn)義的非 ASCII 字符會被編碼為 UTF-8 字節(jié)串。例如:
unquote_to_bytes('a%26%EF')y將產(chǎn)生b'a&\xef'。
-
urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus)? 將一個包含有
str或bytes對象的映射對象或二元組序列轉(zhuǎn)換為以百分號編碼的 ASCII 文本字符串。 如果所產(chǎn)生的字符串要被用作urlopen()函數(shù)的 POST 操作的 data,則它應(yīng)當(dāng)被編碼為字節(jié)串,否則它將導(dǎo)致TypeError。結(jié)果字符串是一系列
key=value對,由'&'字符進(jìn)行分隔,其中 key 和 value 都已使用 quote_via 函數(shù)轉(zhuǎn)碼。 在默認(rèn)情況下,會使用quote_plus()來轉(zhuǎn)碼值,這意味著空格會被轉(zhuǎn)碼為'+'字符而 '/' 字符會被轉(zhuǎn)碼為%2F,即遵循 GET 請求的標(biāo)準(zhǔn) (application/x-www-form-urlencoded)。 另一個可以作為 quote_via 傳入的替代函數(shù)是quote(),它將把空格轉(zhuǎn)碼為%20并且不編碼 '/' 字符。 為了最大程序地控制要轉(zhuǎn)碼的內(nèi)容,請使用quote并指定 safe 的值。When a sequence of two-element tuples is used as the query argument, the first element of each tuple is a key and the second is a value. The value element in itself can be a sequence and in that case, if the optional parameter doseq is evaluates to
True, individualkey=valuepairs separated by'&'are generated for each element of the value sequence for the key. The order of parameters in the encoded string will match the order of parameter tuples in the sequence.safe, encoding 和 errors 形參會被傳遞給 quote_via (encoding 和 errors 形參僅在查詢元素為
str時會被傳遞)。為了反向執(zhí)行這個編碼過程,此模塊提供了
parse_qs()和parse_qsl()來將查詢字符串解析為 Python 數(shù)據(jù)結(jié)構(gòu)。Refer to urllib examples to find out how urlencode method can be used for generating query string for a URL or data for POST.
在 3.2 版更改: 查詢參數(shù)支持字節(jié)和字符串對象。
3.5 新版功能: quote_via 參數(shù).
參見
- WHATWG - URL 現(xiàn)有標(biāo)準(zhǔn)
定義 URL、域名、IP 地址、application/x-www-form-urlencoded 格式及其 API 的工作組。
- RFC 3986 - 統(tǒng)一資源標(biāo)識符
這是當(dāng)前的標(biāo)準(zhǔn) (STD66)。 任何對于 urllib.parse 模塊的修改都必須遵循該標(biāo)準(zhǔn)。 某些偏離也可能會出現(xiàn),這大都是出于向下兼容的目的以及特定的經(jīng)常存在于各主要瀏覽器上的實際解析需求。
- RFC 2732 - URL 中的 IPv6 Addresses 地址顯示格式。
這指明了 IPv6 URL 的解析要求。
- RFC 2396 - 統(tǒng)一資源標(biāo)識符(URI):通用語法
描述統(tǒng)一資源名稱 (URN) 和統(tǒng)一資源定位符 (URL) 通用語義要求的文檔。
- RFC 2368 - mailto URL 模式。
mailto URL 模式的解析要求。
- RFC 1808 - 相對統(tǒng)一資源定位符
這個請求注釋包括聯(lián)結(jié)絕對和相對 URL 的規(guī)則,其中包括大量控制邊界情況處理的 "異常示例"。
- RFC 1738 - 統(tǒng)一資源定位符 (URL)
這指明了絕對 URL 的正式語義和句法。
