Python菜鳥晉級11----urlencode與unquote

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.