Python URL编码入门介绍
1、为什么要进行URL编码?
RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。因此对于Url而言,只有普通英文字符和数字,特殊字符$-_.+!*'()还有保留字符,才能出现在未经编码的Url之中。其他字符均需要经过编码之后才能出现在Url中。
2、Python3对URL编解码
- 导入 urllib.parse
- 编码 urllib.parse.quote()
- 解码 urllib.parse.unquote()
如下所示:
import urllib.parse
hello_world="您好,世界!"
hello_world = urllib.parse.quote(hello_world)
print(hello_world)
# %E6%82%A8%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C%EF%BC%81
hello_world = urllib.parse.unquote(hello_world)
print(hello_world)
# 您好,世界!
3、urlencode 函数
Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如:https://www.baidu.com/s?wd=python%20url%E7%BC%96%E7%A0%81
。但是,在Python里面使用字典来存储key=value键值对,输出格式并不符合Url规范,此时可以利用urlencode函数。urlencode函数的参数是词典,它可以将key-value这样的键值对转换成Url想要的格式,将Url中的键值对以连接符&划分。
import urllib.parse
data = {"name": "张三", "age": 20, "address": "BeiJing"}
data = urllib.parse.urlencode(data)
print(data)
# name=%E5%BC%A0%E4%B8%89&age=20&address=BeiJing