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 的一般结构。每个元组项都是一个字符串。组件不会分解成更小的部分(例如,网络位置是一个单一字符串),并且不会扩展 % 转义。返回值是元组子类的实例,由以下属性组成
| 属性 | 索引 | 值 | 如果不存在,则为值 |
|---|---|---|---|
| 方案 | 0 | URL 方案说明符 | 方案参数 |
| netloc | 1 | 网络位置部分 | 方案参数 |
| 路径 | 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'
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP