设为首页 收藏本站
查看: 904|回复: 0

[经验分享] Python urllib模块的URL编码解码功能

[复制链接]

尚未签到

发表于 2018-8-13 07:03:29 | 显示全部楼层 |阅读模式
  前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍。当然 urllib 还有一些其它很有用的辅助方法,比如对 url 进行编码、解码等等。接下来我们再大概介绍一下。
  我们知道,url 中是不能出现一些特殊的符号的,有些符号有特殊的用途。比如以 get 方式提交数据的时候,会在 url 中添加 key=value 这样的字符串,所以在 value 中是不允许有 '=',因此要对其进行编码;与此同时服务器接收到这些参数的时候,要进行解码,还原成原始的数据。这个时候,这些辅助方法会很有用:

  •   urllib.quote(string[, safe]):对字符串进行编码。参数 safe 指定了不需要编码的字符;
  •   urllib.unquote(string) :对字符串进行解码;
  •   urllib.quote_plus(string [ , safe ] ) :与 urllib.quote 类似,但这个方法用'+'来替换' ',而 quote 用' '来代替' '
  •   urllib.unquote_plus(string ) :对字符串进行解码;
  •   urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{'name': 'dark-bull', 'age': 200}将被转换为"name=dark-bull&age=200"
  •   urllib.pathname2url(path):将本地路径转换成 url 路径;
  •   urllib.url2pathname(path):将url路径转换成本地路径;
  我们接下来运行一下下面的脚本来加深理解。
  import urllib
  data = 'name = ~nowamagic+5'
  data1 = urllib.quote(data)
  print data1 # result: name = ~nowamagic+5
  print urllib.unquote(data1) # name = ~nowamagic+5
  data2 = urllib.quote_plus(data)
  print data2 # result: name+=+~nowamagic+5
  print urllib.unquote_plus(data2)    # name = ~nowamagic+5
  data3 = urllib.urlencode({ 'name': 'nowamagic-gonn', 'age': 200 })
  print data3 # result: age=200&name=nowamagic-gonn
  data4 = urllib.pathname2url(r'd:/a/b/c/23.php')
  print data4 # result: ///D://a/b/c/23.php
  print urllib.url2pathname(data4)    # result: D:/a/b/c/23.php
  在 Python Shell 里执行的具体情况为:
  Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win32
  Type "copyright", "credits" or "license()" for more information.
  >>> import urllib
  >>> data = 'name = ~nowamagic+5'
  >>> data1 = urllib.quote(data)
  >>> print data1
  name = ~nowamagic+5
  >>> print urllib.unquote(data1)
  name = ~nowamagic+5
  >>> data2 = urllib.quote_plus(data)
  >>> print data2
  name+=+~nowamagic+5
  >>> print urllib.unquote_plus(data2)
  name = ~nowamagic+5
  >>> data3 = urllib.urlencode({ 'name': 'nowamagic-gonn', 'age': 200 })
  >>> print data3
  age=200&name=nowamagic-gonn
  >>> data4 = urllib.pathname2url(r'd:/a/b/c/23.php')
  >>> print data4
  ///D://a/b/c/23.php
  >>> print urllib.url2pathname(data4)
  D:\a\b\c\23.php
  urllib模块的基本使用也比较简单,后面根据使用情况会继续跟进了解。
  本文出自http://blog.sina.com.cn/s/blog_b369b20d0101kc05.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550854-1-1.html 上篇帖子: python的内建函数详解 下篇帖子: 简单比较Python的数据持久化操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表