python url解析

Posted muzinan110

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python url解析相关的知识,希望对你有一定的参考价值。

在开始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函数
试试如下代码

[python] view plain copy
 
  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格式编码的字符串

[python] view plain copy
 
  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

[python] view plain copy
 
  1. urlparse.urljoin(‘http://www.myweb.com/something.html‘,‘but/not/anything.html‘)  


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

[python] view plain copy
 
  1. urlparse.urlparse(myurl)  

当然也有对应的反函数urlunparse

以上是关于python url解析的主要内容,如果未能解决你的问题,请参考以下文章

Python3 url解码与参数解析

python web1(解析url)

类似Python的URL解析器和操纵器

Python - Django - 命名 URL 和反向解析 URL

Python3 url解码与参数解析

python url解析