此模块提供了一个标准接口,用于中断组件中的统一资源定位符(URL)字符串或将组件组合回URL字符串。它还具有将给定“基本URL”的“相对URL”转换为绝对URL的功能。
此模块支持以下URL方案-
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
此函数将URL解析为六个部分,返回一个6元组。这对应于URL的一般结构。每个元组项目都是一个字符串。组件不会分成较小的部分(例如,网络位置是单个字符串),并且%转义符不会扩展。返回值是由以下属性组成的元组子类的实例:
属性 | index | 值 | 值(如果不存在) |
---|---|---|---|
scheme | 0 | URL方案说明符 | 方案参数 |
netloc | 1 | 网络位置部分 | 方案参数 |
path | 2 | 分层路径 | 空字符串 |
params | 3 | 最后路径元素的参数 | 空字符串 |
query | 4 | 查询组件 | 空字符串 |
fragment | 5 | 片段标识符 | 空字符串 |
username | 用户名 | 没有 | |
password | 密码 | 没有 | |
hostname | 主机名(小写) | 没有 | |
port | 端口号为整数(如果存在) | 没有 |
>>> 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')
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拆分参数。该函数返回一个5元组:(寻址方案,网络位置,路径,查询,片段标识符)。
>>> from urllib.parse import urlsplit >>> urlsplit(url) SplitResult(scheme = 'https', netloc = 'mail.google.com', path = '/mail/u/0/', query = 'tab = rm', fragment = 'inbox')
此函数将返回的元组元素组合urlsplit()为完整的URL作为字符串。
URL引用功能着重于获取程序数据并通过引用特殊字符并适当地编码非ASCII文本来使其安全地用作URL组件。
此函数使用%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表单值所必需的。
此函数用单字符等效项替换%xx转义。
>>> from urllib.parse import unquote >>> unquote(q) 'https://mail.google.com/mail/u/0/?tab = rm#inbox'
此函数将映射对象或两个元素的元组序列转换为百分比编码的ASCII文本字符串。结果字符串是由“&”字符分隔的一系列键=值对。
>>> from urllib.parse import urlencode >>> qry = {"name":"Rajeev", "salary":20000} >>> urlencode(qry) 'name = Rajeev&salary = 20000'