【Python】urllib.parse 模塊 對url進行編解碼 ,編碼格式類似“%xxxx”


 urlencode()、quote()、unquote()

urlencode 的參數是詞典,它可以將key-value這樣的鍵值對轉換成我們想要的格式

urlencode 對字典或由兩元素元組組成的列表進行碼編碼,將其轉換為符合url規范的查詢字符串

 

 

quote()  對string進行編碼(只對一個字符串進行urlencode轉換)

quote 對非ASCII編碼的字符進行編碼,默認進行UTF-8編碼,不對“/”進行編碼;(,errors=‘strict’(如果不能對string進行編碼,rasie 引發一個 UnicodeEncodeErrort 錯誤))
一般對請求url路徑中非ASCII編碼的字符(string)進行編碼

url 請求鏈接不能包含非ASCII編碼的字符,非ASCII編碼的字符被認為是不安全的,所以進行編碼。
safe = “/”,說明“/”是安全的,不用進行編碼.。
url 中保留的字符:在url 中都認為是安全的可以不進行編碼,safe包含的字符都不會被編碼。

注意:dict格式轉換為dict 編碼與字符串編碼不一致

a = {"name":"zhangsan"}
b = quote(str(a))
c = '{"name":"zhangsan"}'
d = quote(c)

print(a)
print(b)
print(c)
print(d)

 

運行結果

 

 

 

 

unquote()   對url進行解碼,把類似"%xx"的字符替換成單個字符

 

data_dict = {"name": "wangjia", "address": "北京市西城區", "url": "https://www.baidu.com"}

undata_dict = "%7B%27name%27%3A%20%27wangjia%27%2C%20%27address%27%3A%20%27%E5%8C%97%E4%BA%AC%E5%B8%82%E8%A5%BF%E5%9F%8E%E5%8C%BA%27%2C%20%27url%27%3A%20%27https%3A//www.baidu.com%27%7D"

# 對url進行編碼
data_q = urllib.parse.quote(str(data_dict))
print("編碼:", data_q)

# 對url進行解碼
unresult = urllib.parse.unquote(undata_dict)
print("解碼: ", unresult)

# 將URL中的鍵值對以連接符&划分
key_value_data = urllib.parse.urlencode(data_dict)
print("編碼:", key_value_data)

 

編碼: %7B%27name%27%3A%20%27wangjia%27%2C%20%27address%27%3A%20%27%E5%8C%97%E4%BA%AC%E5%B8%82%E8%A5%BF%E5%9F%8E%E5%8C%BA%27%2C%20%27url%27%3A%20%27https%3A//www.baidu.com%27%7D
解碼: {'name': 'wangjia', 'address': '北京市西城區', 'url': 'https://www.baidu.com'}
編碼: name=wangjia&address=%E5%8C%97%E4%BA%AC%E5%B8%82%E8%A5%BF%E5%9F%8E%E5%8C%BA&url=https%3A%2F%2Fwww.baidu.com

進程已結束,退出代碼為 0

 

 

 

 


 

拓展:from urllib.parse import urlparse, urlsplit

  urlparse() 

      可以將 URL 解析成 ParseResult 對象。對象中包含了六個元素

 

  urlsplit() 

 

       urlsplit() 函數也能對 URL 進行拆分,urlsplit() 並不會把 路徑參數(params) 從 路徑(path) 中分離出來。在不能使用urlparse()時 使用此函數。

 


免責聲明!

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



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