在做网络爬虫的程序或者开发网站的时候,有时会发现 URL 地址里有类似这样的『乱码』,是怎么回事?
%E7%BC%96%E7%A8%8B%E6%95%99%E5%AE%A4
这是因为网络标准RFC 1738 对 URL 的合法字符做了硬性规定:
...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL. 只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”(不包括双引号)、以及某些保留字,才可以不经过编码直接用于URL。
所以为了在 URL 里可以传输复杂文字,会做一次编码,这和我们之前提过代码里面显示中文的意思差不多。这种被称为 URL编码。
具体到 Python 代码上,可以通过 urllib.parse.quote 和 unquote 方法来进行编解码:
当我们需要发送模拟请求时,通常需要对 URL 地址进行编码,否则对方的服务器可能会不认。
在 #PY小贴士#里,我们会分享一些 python 知识点、开发中的小技巧、容易踩到的坑,以及学员遇到并在群里提到真实问题。篇幅尽量短小,适合碎片时间阅读,欢迎关注!
如果你在编程学习中有疑问,可选择以下方式向我们提问:
1. 加入码上行动答疑群(最及时响应)
2. 加入知识星球 https://t.zsxq.com/IiAiiQj
3. 发微博加上 #编程教室# 并 @Crossin(非私信)
提问时请表述清楚,附上必要代码、输出等截屏。
也可向本栏目投稿,分享你开发中的经验。采纳后将署名发表,并可附上个人博客、公众号、Github等介绍。
本文分享自 Crossin的编程教室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!