Python url编码和解码

 

目录

引题

url编码有什么作用?

Python怎么对url进行编码和解码?

导入模块

编码

解码


引题

我们上网的时候经常见到url中会有%25E6,这样有%号的字符,下面是51job的链接:

https://search.51job.com/list/020000,000000,0000,00,9,99,%25E6%25B7%25B1%25E5%25BA%25A6%25E5%25AD%25A6%25E4%25B9%25A0,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=

 

%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
机器学习

最后得到我们的最原始的字符串!

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值