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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM