在开始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. xinetd服务管理

    xinetd服务的管理文件都放在 /etc/xinetd.d目录内,我们可以编辑这个目录内的服务文件来开启和关闭服务.每个服务文件都有disable 这个行,如果把值改成yes就是禁用服务,如果是no ...

  2. JSON和JSONP,原来ajax引用这个来实现跨域访问的

    由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...

  3. CSS基础强化

    1. 浮动引起元素变成行内块元素-display:inline-block <div style="width: 400px;height: 200px;"> < ...

  4. JRE System Library、Referenced Libraries、Web App Libraries的含义

    JRE System Library.Referenced Libraries.Web App Libraries 这三个都是jar包的存放集合. JRE System Library:指Java S ...

  5. nodejs request模块用法

    request是服务端发起请求的工具包 1.安装 npm i request 2.基本用法 默认是GET请求 var request = require('request'); request('您的 ...

  6. ThinkPHP5.0中报错could not find driver的解决方式

    这个报错是我的tp5项目转移到另外的服务器中发生的错误, 其中报错信息中还包含这pdo等字眼 解决方法:在php.ini中开启php_pdp_mysql.dll

  7. LeetCode Top 100 Liked Questions in Golang(updating...)

    leetcode go语言版本,主要为了熟悉下语言 1. Two Sum 双指针版本, O(NlogN) func twoSum(nums []int, target int) []int { val ...

  8. WCF ChannelFactory

    public static class WcfExtensions{    public static void Using<T>(this T client, Action<T&g ...

  9. oracle终止数据库Abort

    中止数据库实例, 立即关闭 异常关闭是最主动的关闭类型,并且有如下这些特征: 从shutdown abort命令发布起,禁止建立任何新的oracle连接 当前正在运行的sql语句被终止,无论他们处于什 ...

  10. python系列之(5)PyMySQL的使用

    简介 PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中是使用mysqldb. 安装 pip3 install pymysql 创建连接 #!/usr ...