
解析一个 URL 获得各个概念所对应的值在 Python 中显得很简单, Python3 中将 urllib2、urlparse 和 robotparse 并入了 urllib 模块中, 所以原本在 Python 导入的方式在 Python3 中应该这样导入:
from urllib.parse import urlparse
使用它我们可以获得 ParseResult 对象, 我们可以通过下标或者属性名来访问对象属性:
- scheme (协议)
- netloc (域名)
- path (路径)
- params (可选参数)
- query (连接键值对)
- fragment (特殊锚)
| 属性名 | 索引值 | 说明 | 空值情况下表达 |
|---|---|---|---|
| scheme | 0 | URL 协议 | "" |
| netloc | 1 | URL 域名 | "" |
| path | 2 | URL 请求路径 | "" |
| params | 3 | URL 可选参数 | "" |
| query | 4 | URL 键值对参数 | "" |
| fragment | 5 | URL 特殊锚 | "" |
| username | 用户名 | None |
|
| password | 密码 | None |
|
| hostname | 主机名(小写) | None |
|
| port | 如果存在, 则是整数端口号 | None |
我们测试下这个函数的使用:
#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
from urllib.parse import urlparse
result = urlparse('https://juejin.im/user/2805609406139950/posts?params=123&username=123')
print(result)
输出的结果是:
ParseResult(
scheme='https',
netloc='juejin.im',
path='/user/5da32395e51d4578200cc9c5/posts',
params='',
query='params=123&username=123',
fragment=''
)