【urllib】url編碼問題簡述

對url編解碼總結

需要用到urllib庫中的parse模塊

import urllib.parse
# Python3 url編碼
print(urllib.parse.quote("天天"))
# Python3 url解碼
print(urllib.parse.unquote("%E5%A4%E5%A4%"))

urlparse()

# urllib.parse.urlparse(urlstring,scheme='',allow_fragments=True)  
# urlstring : 這個是必填項,即待解析的URL  
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment')  
print(type(result),result)  # scheme : 它是默認的協議,只有在URL中不包含scheme信息時生效  
result = urlparse('www.baidu.com/index.html;user?id=5#comment',scheme='https')  
print(result)  # allow_fragments : 即是否忽略fragment 設置成False就會忽略,它會被解析為path,parameters或者query的一部分,而fragment部分為空  
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False)  
print(result)  # 返回的結果其實是一個元組,我們可以通過索引來獲取,也可以用屬性名來獲取  
# ParseResult的屬性 scheme(:// 協議),netloc(/ 域名),path(訪問路徑),params(; 參數),query(查詢條件),fragment(# 錨點)  
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False)  
print(result.scheme,result[0],result.netloc,result[1],sep='\n') 

urlunparse()

# urlunparse() 長度必須為6個參數,否則會拋出參數數量不足或者過多的問題  
data = ['http','www.baidu.com','index.html','user','a=6','comment']  
print(urlunparse(data)) 

urlsplit()

# urlsplit() 和urlparse()方法很相似,不再解析params 參數  
result = urlsplit('http://www.baidu.com/index.html;user?id=5#comment')  
print(result)  
# 返回的結果其實也是一個元組,我們可以通過索引來獲取,也可以用屬性名來獲取  
# SplitResult的屬性 scheme(:// 協議),netloc(/ 域名),path(訪問路徑),query(查詢條件),fragment(# 錨點)  
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False)  
print(result.scheme,result[0])  

urlunsplit()

# urlunsplit() 和urlunparse()方法很相似,只不過長度變成5個參數  
data = ['http','www.baidu.com','index.html','a=6','comment']  
print(urlunsplit(data)) 

urljoin()

# urljoin() 也是合并鏈接的一種方式,相比之前倆種方法,沒有之前特定的指定參數對象的長度  
# urljoin()方法提供倆個參數,base_url(基礎鏈接)作為第一個參數,講新的鏈接作為第二個參數,該方法會分析base_url的scheme,netloc和path  
# 這三個內容并對新鏈接確實的部分進行補充,最后返回結果  
print(urljoin('http://www.baidu.com','https://cuiqingcai.com/FAQ.html'))  
print(urljoin('http://www.baidu.com/about.html','https://cuiqingcai.com/FAQ.html'))  
print(urljoin('http://www.baidu.com','FAQ.html'))  
print(urljoin('http://www.baidu.com/about.html','https://cuiqingcai.com/FAQ.html?question=2'))  
print(urljoin('http://www.baidu.com?wd=abc','https://cuiqingcai.com/index.php'))  
print(urljoin('http://www.baidu.com','?category=2#comment'))  print(urljoin('www.baidu.com','?category=2#comment'))  print(urljoin('www.baidu.com#comment','?category=2'))  

urlencode()

# urlencode() 序列化字典類型轉換為請求類型  
params = {  'name' : 'germey',  'age' : 22  
}  
base_url = 'http://www.baidu.com?'  
url = base_url + urlencode(params)  
print(url)  

parse_qs()

# parse_qs() 反序列化將請求參數轉回字典參數  
from urllib.parse import parse_qs  query = 'name=germey&age=22'  
params = parse_qs(query)  
print(params)  

parse_qs1()

# parse_qs1() 它用于把參數轉化為元組組成的列表  
from urllib.parse import parse_qsl  query = 'name=germey&age=22'  
params = parse_qsl(query)  
print(params) 

quote()

# quote() 該方法可以將內容轉化為URL編碼的格式,URL中帶有中文參數時,又是可能會導致亂碼的問題,用這個方法可以將中文字符轉化為URL編碼  
from urllib.parse import quote  keyword = '壁紙'  
url = 'http://www.baidu.coms?wd='+quote(keyword)  
print(url)  

unquote()

# unquote() 它對應上面的方法, 可以進行URL解碼  
from urllib.parse import unquote  url = 'http://www.baidu.coms?wd=%E5%A3%81%E7%BA%B8'  
print(unquote(url))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455997.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

冷知識 —— 地理

西安1980坐標系: 1978 年 4 月在西安召開全國天文大地網平差會議,確定重新定位,建立我國新的坐標系。為此有了 1980 國家大地坐標系。1980 國家大地坐標系采用地球橢球基本參數為 1975 年國際大地測量與地球物理聯合會第十六屆大會推薦的數據…

獨家| ChinaLedger白碩:區塊鏈中的隱私保護

隱私問題一直是區塊鏈應用落地的障礙問題之一,如何既能滿足監管,又能不侵害數據隱私,是行業都在攻克的問題。那么,到底隱私問題為何難?有什么解決思路,以及實踐創新呢?零知識證明、同態加密等技…

手機處理器排行榜2019_手機處理器AI性能排行榜出爐,高通驍龍第一,華為排在第十名...

↑↑↑擊上方"藍字"關注,每天推送最新科技新聞安兔兔在近日公布了今年四月份Android手機處理器AI性能排行榜,榜單顯示高通驍龍865處理器的AI性能在Android陣營中排在第一名——該處理器的AI性能得分接近46萬分,今年的小米10、三星G…

芯片支持的且會被用到的H.264特性 預測編碼基本原理

視頻壓縮: 1.H.264基本檔次和主要檔次;2.CAVLC熵編碼,即基于上下文的自適應變長編碼;(不支持CABAC,即基于上下文的自適應算術編碼)分辨率:僅用到1080p60,即分辨率為1920*…

MongoDB 數據庫 【總結筆記】

一、MongoDB 概念解析 什么是MongoDB? ? 1、MongoDB是有C語言編寫的,是一個基于分布式文件存儲的開源數據庫系統,在高負載的情況下,添加更多節點,可以保證服務器的性能 ? 2、MongoDB為web應用提供了高性能的數據存儲…

PHP 函數截圖 哈哈哈

轉載于:https://www.cnblogs.com/bootoo/p/6714676.html

python中的魔術方法

魔術方法 魔術方法就是一個類/對象中的方法,和普通方法唯一的不同時,普通方法需要調用!而魔術方法是在特定時刻自動觸發。 1.__init__ 初始化魔術方法 觸發時機:初始化對象時觸發(不是實例化觸發,但是和實…

2016年光伏電站交易和融資的十大猜想

1領跑者計劃備受關注,競價上網或從試點開始 領跑者計劃規模大,上網條件好,又有政府背書,雖說價格也不便宜,但省去很多隱性成本,對于致力于規模化發展的大型企業來說仍是首要選擇。同時,從能源管…

loading gif 透明_搞笑GIF:有這樣的女朋友下班哪里都不想去

原標題:搞笑GIF:有這樣的女朋友下班哪里都不想去這樣的廣場舞看著不涼快嗎?大哥慢點,機器經受不住你這樣的速度求孩子的心里陰影面積生孩子就是用來玩的。有這樣的媳婦做飯,下班哪里也不想去1.領導在門外用門夾核桃&am…

Redis數據庫 【總結筆記】

一、NoSql(非關系型數據庫) NoSQL:NoSQL Not Only SQL 非關系型數據庫 ? NoSQL,泛指非關系型的數據庫。隨著互聯網web2.0網站的興起,傳統的關系數據庫在應付web2.0網站,特別是超大規模和高并發的SNS類型…

基于IP的H.264關鍵技術

一、 引言 H.264是ITU-T最新的視頻編碼標準,被稱作ISO/IEC14496-10或MPEG-4 AVC,是由運動圖像專家組(MPEG)和ITU的視頻編碼專家組共同開發的新產品。H.264分兩層結構,包括視頻編碼層和網絡適配層。視頻編碼層處理的是塊、宏塊和片的數據&…

“光伏進社區” 應及早謀劃布局

所謂“光伏進社區”就是全國城鄉居民家庭大批量的利用家庭光伏系統,甚至出現光伏的社區化聯網交換、合作等更深入的活動。雖然“光伏進社區”還有很長的路要走,但“光伏進社區”的各種經濟、技術、社會條件正越來越向有利方向發展。 城鄉居民集聚社區是光…

python中的裝飾器和抽象類

裝飾器和抽象類 裝飾器就是對函數或者方法或者類進行修飾 #第一步:創建一個普通函數 def laxi():print(噗哧噗哧噗哧噗哧~~~)#調用函數 laxi() laxi()#第二步:擴展函數的功能(不是裝飾器) #聲明一個擴展函數 def deco…

eigen庫安裝_OpenCV+Eigen上位機程序移植(七十一)

1、給硬盤分區現在小伙伴們對于給電腦硬盤分區想必比較頭疼,給電腦硬盤分區分為兩種情況,一是在安裝系統之前給系統硬盤分區,二是在安裝系統之后給硬盤分區,我們現在購買的品牌機和筆記本的用戶比較多,而且筆記本和品牌…

【實戰操作】使用FFmpeg將一個視頻文件中音頻合成到另一個視頻中 只需三秒

直接進入主題 主要參數: -i——設置輸入文件名。-f——設置輸出格式。-y——若輸出文件已存在時則覆蓋文件。-fs——超過指定的文件大小時則結束轉換。-t——指定輸出文件的持續時間,以秒為單位。-ss——從指定時間開始轉換,以秒為單位。-t從…

蘋果依舊強大 物聯網領域舉足輕重

近幾天科技界最火爆的話題就是蘋果和谷歌兩家公司,一是蘋果發布財報,二是谷歌人工智能圍棋戰勝歐洲冠軍以及谷歌母公司Alphabet或將超越蘋果,成為世界上市值最大的公司。而在我眼里,未來五年內依然屬于蘋果。回顧下蘋果公司公布的…

linux之SQL語句簡明教程---SUBSTRING

SQL 中的 substring 函數是用來抓出一個欄位資料中的當中一部分。這個函數的名稱在不同的資料庫中不全然一樣: MySQL: SUBSTR( ), SUBSTRING( )Oracle: SUBSTR( )SQL Server: SUBSTRING( )最經常使用到的方式例如以下 (在這里我們用 SUBSTR( ) 為例): SU…

H.264/AVC技術進展及其務實發展策略思考

隨著NGN、3G及3G演進和NGBW等對視頻、多媒體業務與網絡應用的飛速發展需求,作為視頻業務及存儲應用核心技術的高效率 視頻數字壓縮編(譯碼)技術,愈來愈引起人們的關注,成為目前廣播、視頻與多媒體通信領域中的亮點與熱點。制定視頻編碼標準的…

python中錯誤和異常處理

錯誤和異常處理 在python中一共有2種錯誤:一種是語法錯誤,另外一種是異常。 語法錯誤 語法錯誤也叫做解析錯誤,是指python無法正確的識別代碼的造成的。根本原因在于人的行為:手殘,腦殘和眼殘的行為。 解決方法&#x…

listview 每行后面的小箭頭_主臥帶小衣帽裝修,這幾個裝修方案,你喜歡哪個?...

南京裝修交流圈 - 知乎?www.zhihu.com現在大部分人購買的房子面積還是普遍偏小的,每行每業都有自己的服裝講究,不同的場地、見不同的人等等。家中能有一個衣帽間自然也就是心中所向往和追求的。能夠有獨立的一個房間來做衣帽間當然更好,今天…