API 文档#

使用 Sphinx 的 sphinx.ext.autodoc 插件,可以自动生成 Python 模块的文档。

提示

通过设置以下选项,避免使用 autodoc 时出现函数签名内类型注释

# -- Options for autodoc ----------------------------------------------------
# https://sphinx-doc.cn/en/master/usage/extensions/autodoc.html#configuration

# Automatically extract typehints when specified and place them in
# descriptions of the relevant function/method.
autodoc_typehints = "description"

# Don't show class signature with the class' name.
autodoc_class_signature = "separated"

解析(绝对和相对)URL。

urlparse 模块基于以下 RFC 规范。

RFC 3986 (STD66): T. Berners-Lee、R. Fielding 和 L. Masinter 于 2005 年 1 月撰写的“统一资源标识符”。

RFC 2732: R.Hinden、B.Carpenter 和 L.Masinter 于 1999 年 12 月撰写的“URL 中的 IPv6 地址文本格式”。

RFC 2396: T. Berners-Lee、R. Fielding 和 L. Masinter 于 1998 年 8 月撰写的“统一资源标识符 (URI):通用语法”。

RFC 2368: P.Hoffman、L Masinter 和 J. Zawinski 于 1998 年 7 月撰写的“mailto URL 方案”。

RFC 1808: UC Irvine 的 R. Fielding 于 1995 年 6 月撰写的“相对统一资源定位符”。

RFC 1738: T. Berners-Lee、L. Masinter 和 M. McCahill 于 1994 年 12 月撰写的“统一资源定位符 (URL)”

RFC 3986 被认为是当前标准,urlparse 模块的任何未来更改都应符合该标准。由于解析的实际情况以及为了向后兼容,urlparse 模块目前并不完全符合此 RFC,保留了一些旧 RFC 的解析怪癖。test_urlparse.py 中的测试用例很好地指示了解析行为。

还应考虑 WHATWG URL 解析器规范。由于现有用户代码 API 行为预期(Hyrum 定律),我们也不符合它。它在进行更改时可作为有用的指南。

class urllib.parse.DefragResult(url, fragment)[源代码]#

方法

count(value, /)

返回 value 的出现次数。

index(value[, start, stop])

返回 value 的第一个索引。

编码

获取 url

class urllib.parse.DefragResultBytes(url, fragment)[源代码]#

方法

count(value, /)

返回 value 的出现次数。

index(value[, start, stop])

返回 value 的第一个索引。

解码

获取 url

class urllib.parse.ParseResult(scheme, netloc, path, params, query, fragment)[源代码]#
属性:
主机名
密码
端口
用户名

方法

count(value, /)

返回 value 的出现次数。

index(value[, start, stop])

返回 value 的第一个索引。

编码

获取 url

class urllib.parse.ParseResultBytes(scheme, netloc, path, params, query, fragment)[源代码]#
属性:
主机名
密码
端口
用户名

方法

count(value, /)

返回 value 的出现次数。

index(value[, start, stop])

返回 value 的第一个索引。

解码

获取 url

class urllib.parse.SplitResult(scheme, netloc, path, query, fragment)[源代码]#
属性:
主机名
密码
端口
用户名

方法

count(value, /)

返回 value 的出现次数。

index(value[, start, stop])

返回 value 的第一个索引。

编码

获取 url

class urllib.parse.SplitResultBytes(scheme, netloc, path, query, fragment)[源代码]#
属性:
主机名
密码
端口
用户名

方法

count(value, /)

返回 value 的出现次数。

index(value[, start, stop])

返回 value 的第一个索引。

解码

获取 url

urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&')[source]#

解析以字符串参数形式给出的查询。

参数

qs: 要解析的百分号编码的查询字符串

keep_blank_values: 指示是否将百分号编码查询中的空值视为

空字符串的标志。值为 true 表示应将空白保留为空字符串。默认值 false 表示忽略空值,并将其视为未包含。

strict_parsing: 指示如何处理解析错误的标志。

如果为 false(默认值),则静默忽略错误。如果为 true,则错误会引发 ValueError 异常。

encoding 和 errors: 指定如何将百分号编码的序列解码为

Unicode 字符,与 bytes.decode() 方法接受的参数相同。

max_num_fields: int。如果设置,则当 parse_qsl() 读取的字段数

超过 n 时,将引发 ValueError。

separator: str。用于分隔查询参数的符号。

默认为 &。

返回一个字典。

urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&')[source]#

解析以字符串参数形式给出的查询。

参数

qs: 要解析的百分号编码的查询字符串

keep_blank_values: 指示是否将百分号编码查询中的空值视为

空字符串的标志。值为 true 表示应将空白保留为空字符串。默认值 false 表示忽略空值,并将其视为未包含。

strict_parsing: 指示如何处理解析错误的标志。如果为

false(默认值),则静默忽略错误。如果为 true,则错误会引发 ValueError 异常。

encoding 和 errors: 指定如何将百分号编码的序列解码为

Unicode 字符,与 bytes.decode() 方法接受的参数相同。

max_num_fields: int。如果设置,则当 parse_qsl() 读取的字段数

超过 n 时,将引发 ValueError。

separator: str。用于分隔查询参数的符号。

默认为 &。

返回一个列表。

urllib.parse.quote(‘abc def’) ‘abc%20def’[source]#

URL 的每个部分(例如路径信息、查询等)都有一组不同的保留字符,必须对其进行引用。 quote 函数提供了一种谨慎(并非最简化)的方式来引用大多数这些部分的字符串。

RFC 3986 统一资源标识符 (URI):通用语法列出了以下(非)保留字符。

非保留字符 = 字母 / 数字 / “-” / “.” / “_” / “~” 保留字符 = gen-delims / sub-delims gen-delims = “:” / “/” / “?” / “#” / “[” / “]” / “@” sub-delims = “!” / “$” / “&” / “’” / “(” / “)”

/ “*” / “+” / “,” / “;” / “=”

每个保留字符都在 URL 的某些组件中保留,但不一定在所有组件中都保留。

quote 函数会对所有既不在非保留字符(“始终安全”)也不在通过 safe 参数设置的附加字符集中的字符进行百分号转义。

safe 参数的默认值为 ‘/’。该字符是保留的,但在典型用法中,quote 函数是在要保留现有斜杠字符的路径上调用的。

Python 3.7 已从使用 RFC 2396 更新为使用 RFC 3986 来引用 URL 字符串。现在,“~” 包含在非保留字符集中。

string 和 safe 可以是 str 或 bytes 对象。如果 string 是 bytes 对象,则不得指定 encoding 和 errors。

可选的 encoding 和 errors 参数指定如何处理非 ASCII 字符,与 str.encode 方法接受的参数相同。默认情况下,encoding='utf-8'(字符使用 UTF-8 编码),errors='strict'(不支持的字符会引发 UnicodeEncodeError)。

urllib.parse.quote_from_bytes(bs, safe='/')[source]#

与 quote() 类似,但接受 bytes 对象而不是 str,并且不执行字符串到字节的编码。它始终返回 ASCII 字符串。 quote_from_bytes(b'abc def?') -> ‘abc%20def%3f’

urllib.parse.quote_plus(string, safe='', encoding=None, errors=None)[source]#

与 quote() 类似,但还会将 ‘ ’ 替换为 ‘+’,这是引用 HTML 表单值所必需的。原始字符串中的加号会被转义,除非它们包含在 safe 中。它的 safe 默认值也不是 ‘/’。

urllib.parse.unquote(string, encoding='utf-8', errors='replace')#

将 %xx 转义序列替换为其对应的单字符。可选的 encoding 和 errors 参数指定如何将百分号编码的序列解码为 Unicode 字符,与 bytes.decode() 方法接受的参数相同。默认情况下,百分号编码的序列使用 UTF-8 解码,无效的序列将被替换为占位符。

unquote(‘abc%20def’) -> ‘abc def’。

urllib.parse.unquote_plus(string, encoding='utf-8', errors='replace')#

类似于 unquote(),但还会将加号替换为空格,这是 HTML 表单值解码所必需的。

unquote_plus(‘%7e/abc+def’) -> ‘~/abc def’

urllib.parse.unquote_to_bytes('abc%20def') b'abc def'.#
urllib.parse.urldefrag(url)#

移除 URL 中的任何片段标识符。

返回一个由去除了片段标识符的 URL 和片段标识符组成的元组。如果 URL 不包含片段标识符,则第二个元素为空字符串。

urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=<function quote_plus>)#

将字典或二元组序列编码为 URL 查询字符串。

如果 query 参数中的任何值是序列,并且 doseq 为 true,则每个序列元素都将转换为单独的参数。

如果 query 参数是二元组序列,则输出中参数的顺序将与输入中参数的顺序匹配。

query 参数的组成部分可以是字符串或字节类型。

safe、encoding 和 errors 参数将传递给 quote_via 指定的函数(仅当组件是 str 类型时才传递 encoding 和 errors)。

urllib.parse.urljoin(base, url, allow_fragments=True)#

将基本 URL 和可能的相对 URL 连接起来,形成后者的绝对解释。

urllib.parse.urlparse(url, scheme='', allow_fragments=True)#

将 URL 解析为 6 个组件: <scheme>://<netloc>/<path>;<params>?<query>#<fragment>

结果是一个包含与上述字段对应的 6 个元素的命名元组。它是一个 ParseResult 或 ParseResultBytes 对象,取决于 url 参数的类型。

netloc 的用户名、密码、主机名和端口子组件也可以作为返回对象的属性进行访问。

当在 url 中找不到 scheme 组件时,scheme 参数提供 scheme 组件的默认值。

如果 allow_fragments 为 False,则不会尝试将 fragment 组件与前一个组件(可以是 path 或 query)分开。

注意,% 转义序列不会被展开。

urllib.parse.urlsplit(url, scheme='', allow_fragments=True)#

将 URL 解析为 5 个组件: <scheme>://<netloc>/<path>?<query>#<fragment>

结果是一个包含与上述字段对应的 5 个元素的命名元组。它是一个 SplitResult 或 SplitResultBytes 对象,取决于 url 参数的类型。

netloc 的用户名、密码、主机名和端口子组件也可以作为返回对象的属性进行访问。

当在 url 中找不到 scheme 组件时,scheme 参数提供 scheme 组件的默认值。

如果 allow_fragments 为 False,则不会尝试将 fragment 组件与前一个组件(可以是 path 或 query)分开。

注意,% 转义序列不会被展开。

urllib.parse.urlunparse(components)#

将已解析的 URL 重新组合在一起。如果最初解析的 URL 具有冗余分隔符(例如带有空查询的 ?,草案声明这些是等效的),这可能会导致略有不同但等效的 URL。

urllib.parse.urlunsplit(components)#

将 urlsplit() 返回的元组的元素组合成一个完整的 URL 字符串。data 参数可以是任何五项可迭代对象。如果最初解析的 URL 具有不必要的分隔符(例如,带有空查询的 ?;RFC 声明这些是等效的),这可能会导致略有不同但等效的 URL。