在开始python编程之前我们先来看看一个关与url的知识
在url中会有一些特殊字符,如果你写过cgi程序,并且提交一个表单去调用你的cgi,你会很清楚的
像?name=aiqier&age=21这样的参数传递
下面总结一下常见的url特殊字符的含义

空格换成加号(+)
正斜杠(/)分隔目录和子目录
问号(?)分隔URL和查询
百分号(%)制定特殊字符
#号指定书签
&号分隔参数

如果需要在URL中用到,需要将这些特殊字符换成相应的十六进制的值
字符                                    URL编码值
            空格                                        %20
              "                                          %22
              #                                          %23
             %                                         %25
             &                                          %26
              (                                          %28
             )                                           %29
            +                              %2B
             ,                                           %2C
             /                                           %2F
             :                                           %3A
             ;                                           %3B
            <                                           %3C
            =                                           %3D
            >                                           %3E
             ?                                           %3F
            @                                           %4o
             \                                           %5C
             |                                           %7C

现在问题来了,如果你的参数本身就有像”&”这样的字符,肿么办?
比如name=aiqier&liu&age=21(说明,aiqier&liu和21是我要传递的参数)
所以我们要对url的字符进行转义用到urllib.quote函数
试试如下代码

  1. myurl = 'http://www/~wo/lai-le/he.py?name=tom&age=6'
  2. urllib.quote(myurl)

quote和quote_plus差不多,quote_plus会把空格转义成+号,你可以试试

当然python为我们提供了对应的反函数,我们可把那些字符解码
urllib.unquote和urllib.unquote_plus()

urllib.urlencode把映射(键值对)转化成url格式编码的字符串

  1. myarg = {'name':'aiqier','age':'&15'}
  2. urllib.urlencode(myarg)

你会发现,它同时也调用了quote_plus()进行编码

对url字符串的操作urlparse模块

你在学习string时会遇到什么join,split之类的函数,在学习文件操作时,会遇到跟文件路径有关的join函数,split函数
所以在对url操作是你会遇到一个urljoin,你是不是已经猜到它的作用了?

urljoin(baseurl,newurl)将baseurl和newurl合并成一个完整的url

  1. urlparse.urljoin('http://www.myweb.com/something.html','but/not/anything.html')

urlparse.urlparse对url字符拆分成各个部件
url的结构是这样的:
协议://授权/路径;参数?连接符#拆分文档中的特殊锚

  1. urlparse.urlparse(myurl)

当然也有对应的反函数urlunparse

URL的转义和解析的更多相关文章

  1. HTTP URL 字符转义 字符编码 、 RFC 3986编码规范

    一.为什么要编码转义 通常如果一样东西需要编码,说明这样东西并不适合传输.原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义. 例如Url参 ...

  2. Js把URL中的参数解析为一个对象

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. mac下载的excel如果带有超链接,url被转义问题

    注释的代码是file开头的,这种链接在mac系统进行跳转url会转义 hyperlink 还有一种就是http这种就可以正常跳转了. String sLink = basePath + "/ ...

  4. day58——模板继承、组件、自定义标签和过滤器、inclusion_tag、静态文件配置、url别名和反向解析、url命名空间

    day58 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承它使用) 2. 在母版中定义block块(可以定义多个,整个页面任意位置) {% block co ...

  5. django url别名和反向解析 命名空间

    url别名和反向解析 我们平时写的url名字都是死的,如果项目过大,需要项目中某个文件名改动一下,那么改动起来就不是一般的麻烦了,所以我们就在定义的时候给url起一个别名,以后不管哪个文件中运用都是用 ...

  6. Python3 url解码与参数解析

    Python3 url解码与参数解析 有些子节点名字直接就是编码后的url,就像下面这行一样: url='dubbo%3A%2F%2F10.4.5.3%3A20880%2Fcom.welab.auth ...

  7. url特殊字符转义及解决方法

    URL特殊字符需转义 1.空格换成加号(+) 2.正斜杠(/)分隔目录和子目录 3.问号(?)分隔URL和查询 4.百分号(%)制定特殊字符 5.#号指定书签 6.&号分隔参数 转义字符的原因 ...

  8. php url字符转义操作

    遇到一段代码,从数据库里读出来带 \ 字符 需要转义成中文~ 用到url_decode(); //$info 为刚从数据库中读取的二维数组 foreach($info as $key1 => & ...

  9. javascript:将URL的参数列表解析为一个对象

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. 微信小程序之组件的集合(一)

    小程序中是很强调组件中开发的,我们看到的页面是由许多组件组成的,但是这些组件是如何组合在一起的呢?来学习一下!  一.组件中数据的获取 接着上一篇文章,继续来优化代码,如何把从服务器上获取的数据显示到 ...

  2. Nacos Committers 团队首亮相,发布 0.9.0 版本

    223 天,发布 14 个版本,19 位 Committers,39 位 Contributors. 在宣布开源后的第 223 天,Nacos 发布了其第14个版本 - 0.9.0,该版本提升了 Na ...

  3. LintCode_46 主元素

    题目 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一. 样例 给出数组[1,1,1,1,2,2,2],返回 1 思路 首先 发现所给的数组是顺序排列好的. 用动态规划 ...

  4. python输出最大公约数和最小公倍数

    def myfun(): num1 = int(input('输入num1')) num2 = int(input('输入num2')) list1=[] for i in range(1, max( ...

  5. php后端对跳转的封装

    php后端对跳转的封装 /** * 页面跳转 * $url 跳转地址 * $time 一段时间后跳转 */ function app_redirect($url,$time=0,$msg='') { ...

  6. PHP加密解密方法

    加密解密方法 //字符串解密加密 function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { $ckey_l ...

  7. navgator 用于浏览器检测

  8. 公司mysql问题二

    这个问题解决:

  9. 在APPfuse中配置log4j进行定位

    appFuse使用log4j进行日志输出,默认日志级别为warn,输出到串口console. 一下修改为debug级别,输出到串口及文件中: 1.修改(tomcat中的页面根目录)/appfuse/W ...

  10. 用Java来获取访问者真实的IP地址

    用Java来获取访问者真实的IP地址 转载 2016年06月07日 14:36:02 标签: 16497 编辑 删除 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAdd ...