python3 使用urllib.parse对url进行处理

对于处理某些通过 url 传参的请求,可以使用 urllib.parse 来处理,当然,也可以自己写方法。

下面放上一个demo:

import urllib.parse
 
scheme = "http"
host = "www.urllib_parse.com"
path = r"test/test_1/test_2"
data = {
    "key" : "value",
    "键" : "值"
}
frag = "frag"
 
data_parse = urllib.parse.urlencode(data)                   # 将字典格式的参数转换成 url 传参,并对中文字符进行编码
print(data_parse)
 
data_parse_unquote = urllib.parse.unquote(data_parse)       # 将已经过 url 编码的文本进行 url 解码
print(data_parse_unquote)
 
data_parse_quote = urllib.parse.quote(data_parse_unquote)   # 重新编码,会对'&'、'='一起编码
print(data_parse_quote)
 
url_1 = urllib.parse.urlunparse((scheme, host, path, "", data_parse, frag))     # 拼接成 url 的第一种方式
print(url_1)
 
url_2 = urllib.parse.urlunsplit((scheme, host, path, data_parse, frag))         # 拼接成 url 的第二种方式
print(url_2)
 
url_11 = urllib.parse.urlparse(url_1)           # 两种方式对比
url_22 = urllib.parse.urlsplit(url_2)
print(url_11)
print(url_22)

 运行结果:

key=value&%E9%94%AE=%E5%80%BC
key=value&键=值
key%3Dvalue%26%E9%94%AE%3D%E5%80%BC
http://www.urllib_parse.com/test/test_1/test_2?key=value&%E9%94%AE=%E5%80%BC#frag
http://www.urllib_parse.com/test/test_1/test_2?key=value&%E9%94%AE=%E5%80%BC#frag
ParseResult(scheme='http', netloc='www.urllib_parse.com', path='/test/test_1/test_2', params='', query='key=value&%E9%94%AE=%E5%80%BC', fragment='frag')
SplitResult(scheme='http', netloc='www.urllib_parse.com', path='/test/test_1/test_2', query='key=value&%E9%94%AE=%E5%80%BC', fragment='frag')

 parse_qs, 将get请求参数转化成字典

import urllib.parse

data = 'name=czh'
print(urllib.parse.parse_qs(data))

# # 结果:{'name': ['czh']}

猜你喜欢

转载自blog.csdn.net/Ren_ger/article/details/85160986