目录
引题
我们上网的时候经常见到url中会有%25E6,这样有%号的字符,下面是51job的链接:
%25E6%25B7%25B1%25E5%25BA%25A6%25E5%25AD%25A6%25E4%25B9%25A0
是我搜索的关键字“深度学习”,这是url编码两次后的结果。
通过在线url解码试试看解码的结果,我用的在线解码网址:https://www.sojson.com/encodeurl.html
1、第一次解码,得到的结果是%后面加两个字符
2、第二次解码,得到的就是正常的中文了。
一般的,url编码后的规律:
编码一次,%号后面加两个字符;
编码二次,%号后面加四个字符;
编码三次,%号后面加六个字符。
url编码有什么作用?
如果你搜索的关键词是“深度学习&机器学习”,中间有个url的特殊字符&,那么服务器收到这个get请求的时候就会出错,不知道如何去解析请求带的参数了,所以需要把这一整块进行编码。编码一次得到的结果是%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0&%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0,就已经没有特殊字符&,这样请求就没有问题,服务器拿到这个参数进行解码就能正常解析得到想要的参数。
Python怎么对url进行编码和解码?
导入模块
import urllib.parse
编码
urllib.parse.quote(),对字符串进行url编码
import urllib.parse
kw="机器学习"
kw1=urllib.parse.quote(kw)
print(kw1)
kw2=urllib.parse.quote(kw1)
print(kw2)
kw3=urllib.parse.quote(kw2)
print(kw3)
输出结果:
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
%25E6%259C%25BA%25E5%2599%25A8%25E5%25AD%25A6%25E4%25B9%25A0
%2525E6%25259C%2525BA%2525E5%252599%2525A8%2525E5%2525AD%2525A6%2525E4%2525B9%2525A0
解码
urllib.parse.unquote() ,对字符串进行url解码
import urllib.parse
kw="机器学习"
# 编码
kw1=urllib.parse.quote(kw)
print(kw1)
kw2=urllib.parse.quote(kw1)
print(kw2)
kw3=urllib.parse.quote(kw2)
print(kw3)
# 解码
ym2=urllib.parse.unquote(kw3)
print(ym2)
ym1=urllib.parse.unquote(ym2)
print(ym1)
ym=urllib.parse.unquote(ym1)
print(ym)
输出结果:
# 编码开始
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
%25E6%259C%25BA%25E5%2599%25A8%25E5%25AD%25A6%25E4%25B9%25A0
%2525E6%25259C%2525BA%2525E5%252599%2525A8%2525E5%2525AD%2525A6%2525E4%2525B9%2525A0
# 解码开始
%25E6%259C%25BA%25E5%2599%25A8%25E5%25AD%25A6%25E4%25B9%25A0
%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
机器学习
最后得到我们的最原始的字符串!