標籤:python 網路爬蟲
當url地址含有中文或者“/”的時候,這是就需要用做urlencode一下編碼轉換。
一、urlencode
urlencode的參數是詞典,它可以將key-value這樣的鍵值對轉換成我們想要的格式。如果你用的是python2.*,urlencode在urllib.urlencode。如果使用的是python3,urlencode在urllib.parse.urlencode
例如
import urllib.parsedata={"name":"王尼瑪","age":"/","addr":"abcdef"}print(urllib.parse.urlencode(data))
輸出為
addr=abcdef&name=%E7%8E%8B%E5%B0%BC%E7%8E%9B&age=%2F
如果只想對一個字串進行urlencode轉換,怎麼辦?urllib提供另外一個函數:quote()
print(urllib.parse.quote("hahaha你好啊!"))
輸出為
hahaha%E4%BD%A0%E5%A5%BD%E5%95%8A%EF%BC%81
二、unquote當urlencode之後的字串傳遞過來之後,接受完畢就要解碼了——urldecode。urllib提供了unquote()這個函數,可沒有urldecode()!
import urllib.parsedata={"name":"王尼瑪","age":"/","addr":"abcdef"}print(urllib.parse.urlencode(data))print(urllib.parse.quote("hahaha你好啊!"))print(urllib.parse.unquote("hahaha%E4%BD%A0%E5%A5%BD%E5%95%8A%EF%BC%81"))
輸出
addr=abcdef&name=%E7%8E%8B%E5%B0%BC%E7%8E%9B&age=%2Fhahaha%E4%BD%A0%E5%A5%BD%E5%95%8A%EF%BC%81hahaha你好啊!
在做urldecode的時候,看unquote()這個函數的輸出,是對應中文在gbk下的編碼,在對比一下quote()的結果不難發現,所謂的urlencode就是把字串轉車gbk編碼,然後把\x替換成%。如果你的終端是utf8編碼的,那麼要把結果再轉成utf8輸出,否則就亂碼。
可以根據實際情況,自訂或者重寫urlencode()、urldecode()等函數。
Python菜鳥晉級11----urlencode與unquote