Python 中的 urllib.parse 模块提供了很多解析和组建 URL 的函数。
-- Darksun
致谢
转载自 | https://github.com/lujun9972/lujun9972.github.com/blob/source/%E7%BC%96%E7%A8%8B%E4%B9%8B%E6%97%85/%E4%BD%BF%E7%94%A8urlliib.parse%E5%BA%93%E8%A7%A3%E6%9E%90url.org
作者 | Darksun
Python 中的 模块提供了很多解析和组建 URL 的函数。
解析url
函数可以将 URL 解析成 对象。对象中包含了六个元素,分别为:
◈ 协议(scheme)
◈ 域名(netloc)
◈ 路径(path)
◈ 路径参数(params)
◈ 查询参数(query)
◈ 片段(fragment)
结果为:
继承于 ,因此可以同时通过索引和命名属性来获取 URL 中各部分的值。
为了方便起见, 还提供了 、 、 、 对 进一步进行拆分。
结果为:
除了 之外,还有一个类似的 函数也能对 URL 进行拆分,所不同的是, 并不会把 从 中分离出来。
当 URL 中路径部分包含多个参数时,使用 解析是有问题的:
结果为:
这时可以使用 来解析:
结果为:
若只是要将 URL 后的 标识拆分出来,可以使用 函数:
结果为:
组建URL
对象和 对象都有一个 方法,可以返回一个完整的 URL 字符串。
结果为:
但是 只在 和 对象中有,若想将一个普通的元组组成 URL,则需要使用 函数:
结果为:
相对路径转换绝对路径
除此之外, 还提供了一个 函数,来将相对路径转换成绝对路径的 URL。
结果为:
查询参数的构造和解析
使用 函数可以将一个 dict 转换成合法的查询参数:
结果为:
可以看到特殊字符也被正确地转义了。
相对的,可以使用 来将查询参数解析成 dict。
结果为:
如果只是希望对特殊字符进行转义,那么可以使用 或 函数,其中 比 更激进一些,会把 、 一类的符号也给转义了。
结果为:
可以看到 中应该是调用 来进行转义的。
逆向操作则使用 或 函数:
结果为:
你会发现 函数居然能正确地将 的结果转换回来。
领取专属 10元无门槛券
私享最新 技术干货