在開始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函數
試試如下代碼
- myurl = 'http://www/~wo/lai-le/he.py?name=tom&age=6'
- urllib.quote(myurl)
quote和quote_plus差不多,quote_plus會把空格轉義成+號,你可以試試
當然python為我們提供了對應的反函數,我們可把那些字符解碼
urllib.unquote和urllib.unquote_plus()
urllib.urlencode把映射(鍵值對)轉化成url格式編碼的字符串
- myarg = {'name':'aiqier','age':'&15'}
- urllib.urlencode(myarg)
你會發現,它同時也調用了quote_plus()進行編碼
對url字符串的操作urlparse模塊
你在學習string時會遇到什么join,split之類的函數,在學習文件操作時,會遇到跟文件路徑有關的join函數,split函數
所以在對url操作是你會遇到一個urljoin,你是不是已經猜到它的作用了?
urljoin(baseurl,newurl)將baseurl和newurl合並成一個完整的url
- urlparse.urljoin('http://www.myweb.com/something.html','but/not/anything.html')
urlparse.urlparse對url字符拆分成各個部件
url的結構是這樣的:
協議://授權/路徑;參數?連接符#拆分文檔中的特殊錨
- urlparse.urlparse(myurl)
當然也有對應的反函數urlunparse