Python-urllib庫parse模塊解析鏈接常用方法


版權聲明:本文為博主學習記錄,轉載請注明出處()

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))

 


免責聲明!

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



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