【Python】 urllib.parse 解析url


 urlencode()、quote()、unquote()

urlencode的参数是词典,它可以将key-value这样的键值对转换成我们想要的格式

quote()  只对一个字符串进行urlencode转换

unquote()   对url进行解码,把类似"%xx"的字符替换成单个字符

data_dict = {"name": "wangjia", "address": "北京市西城区", "url": "https://www.baidu.com"}

undata_dict = "%7B%27name%27%3A%20%27wangjia%27%2C%20%27address%27%3A%20%27%E5%8C%97%E4%BA%AC%E5%B8%82%E8%A5%BF%E5%9F%8E%E5%8C%BA%27%2C%20%27url%27%3A%20%27https%3A//www.baidu.com%27%7D"

# 对url进行编码
data_q = urllib.parse.quote(str(data_dict))
print("编码:", data_q)

# 对url进行解码
unresult = urllib.parse.unquote(undata_dict)
print("解码: ", unresult)

# 将URL中的键值对以连接符&划分
key_value_data = urllib.parse.urlencode(data_dict)
print("编码:", key_value_data)

编码: %7B%27name%27%3A%20%27wangjia%27%2C%20%27address%27%3A%20%27%E5%8C%97%E4%BA%AC%E5%B8%82%E8%A5%BF%E5%9F%8E%E5%8C%BA%27%2C%20%27url%27%3A%20%27https%3A//www.baidu.com%27%7D
解码: {'name': 'wangjia', 'address': '北京市西城区', 'url': 'https://www.baidu.com'}
编码: name=wangjia&address=%E5%8C%97%E4%BA%AC%E5%B8%82%E8%A5%BF%E5%9F%8E%E5%8C%BA&url=https%3A%2F%2Fwww.baidu.com

进程已结束,退出代码为 0

拓展:from urllib.parse import urlparse, urlsplit

  urlparse() 

      可以将 URL 解析成 ParseResult 对象。对象中包含了六个元素

  urlsplit() 

       urlsplit() 函数也能对 URL 进行拆分,urlsplit() 并不会把 路径参数(params) 从 路径(path) 中分离出来。在不能使用urlparse()时 使用此函数。