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


免責聲明!

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



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