基于python 自带module urllib
from urllib.parse import parse_qs, urlparse, urlencode, unquote, unquote_plus, quote, quote_plus
def parse_url_params(url):
"""将url ?后的参数转成字典"""
# 提取url参数
query = urlparse(url).query
# 将字符串转换为字典
params = parse_qs(query)
# 所得的字典的value都是以列表的形式存在,若列表中都只有一个值
result = {key: params[key][0] for key in params}
return result
def dict_to_url_params(dct):
"""将字典转成url params格式"""
return urlencode(dct)
def url_params_encode(value, code_type='plus'):
"""
将正常url编码 / quote不编码斜杠 /quote_plus编码斜杠
"""
if code_type == 'plus':
return quote_plus(value)
else:
return quote(value)
def url_params_decode(value, code_type='plus'):
"""
将url编码转成中文/ unquote不解码加号 /unquote_plus把加号解码为空格
"""
if code_type == 'plus':
return unquote_plus(value)
else:
return unquote(value)
if __name__ == '__main__':
a = parse_url_params('https://blog.csdn.net/u011342224/article/details/103138592/?tab=all')
print(a) # {'tab': 'all'}
b = dict_to_url_params({'tab': 'all/+'})
print(b) # tab=all%2F%2B
c = url_params_encode('https://blog.csdn.net/u011342224/article/details/103138592/?tab=all')
print(c) # https%3A%2F%2Fblog.csdn.net%2Fu011342224%2Farticle%2Fdetails%2F103138592%2F%3Ftab%3Dall
d = url_params_decode(c)
print(d) #https://blog.csdn.net/u011342224/article/details/103138592/?tab=all