【urllib】url编码问题简述
生活随笔
收集整理的這篇文章主要介紹了
【urllib】url编码问题简述
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
對(duì)url編解碼總結(jié)
需要用到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 : 這個(gè)是必填項(xiàng),即待解析的URL result = urlparse('http://www.baidu.com/index.html;user?id=5#comment') print(type(result),result) # scheme : 它是默認(rèn)的協(xié)議,只有在URL中不包含scheme信息時(shí)生效 result = urlparse('www.baidu.com/index.html;user?id=5#comment',scheme='https') print(result) # allow_fragments : 即是否忽略fragment 設(shè)置成False就會(huì)忽略,它會(huì)被解析為path,parameters或者query的一部分,而fragment部分為空 result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False) print(result) # 返回的結(jié)果其實(shí)是一個(gè)元組,我們可以通過索引來獲取,也可以用屬性名來獲取 # ParseResult的屬性 scheme(:// 協(xié)議),netloc(/ 域名),path(訪問路徑),params(; 參數(shù)),query(查詢條件),fragment(# 錨點(diǎn)) 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() 長(zhǎng)度必須為6個(gè)參數(shù),否則會(huì)拋出參數(shù)數(shù)量不足或者過多的問題 data = ['http','www.baidu.com','index.html','user','a=6','comment'] print(urlunparse(data))urlsplit()
# urlsplit() 和urlparse()方法很相似,不再解析params 參數(shù) result = urlsplit('http://www.baidu.com/index.html;user?id=5#comment') print(result) # 返回的結(jié)果其實(shí)也是一個(gè)元組,我們可以通過索引來獲取,也可以用屬性名來獲取 # SplitResult的屬性 scheme(:// 協(xié)議),netloc(/ 域名),path(訪問路徑),query(查詢條件),fragment(# 錨點(diǎn)) result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False) print(result.scheme,result[0])urlunsplit()
# urlunsplit() 和urlunparse()方法很相似,只不過長(zhǎng)度變成5個(gè)參數(shù) data = ['http','www.baidu.com','index.html','a=6','comment'] print(urlunsplit(data))urljoin()
# urljoin() 也是合并鏈接的一種方式,相比之前倆種方法,沒有之前特定的指定參數(shù)對(duì)象的長(zhǎng)度 # urljoin()方法提供倆個(gè)參數(shù),base_url(基礎(chǔ)鏈接)作為第一個(gè)參數(shù),講新的鏈接作為第二個(gè)參數(shù),該方法會(huì)分析base_url的scheme,netloc和path # 這三個(gè)內(nèi)容并對(duì)新鏈接確實(shí)的部分進(jìn)行補(bǔ)充,最后返回結(jié)果 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() 序列化字典類型轉(zhuǎn)換為請(qǐng)求類型 params = { 'name' : 'germey', 'age' : 22 } base_url = 'http://www.baidu.com?' url = base_url + urlencode(params) print(url)parse_qs()
# parse_qs() 反序列化將請(qǐng)求參數(shù)轉(zhuǎn)回字典參數(shù) from urllib.parse import parse_qs query = 'name=germey&age=22' params = parse_qs(query) print(params)parse_qs1()
# parse_qs1() 它用于把參數(shù)轉(zhuǎn)化為元組組成的列表 from urllib.parse import parse_qsl query = 'name=germey&age=22' params = parse_qsl(query) print(params)quote()
# quote() 該方法可以將內(nèi)容轉(zhuǎn)化為URL編碼的格式,URL中帶有中文參數(shù)時(shí),又是可能會(huì)導(dǎo)致亂碼的問題,用這個(gè)方法可以將中文字符轉(zhuǎn)化為URL編碼 from urllib.parse import quote keyword = '壁紙' url = 'http://www.baidu.coms?wd='+quote(keyword) print(url)unquote()
# unquote() 它對(duì)應(yīng)上面的方法, 可以進(jìn)行URL解碼 from urllib.parse import unquote url = 'http://www.baidu.coms?wd=%E5%A3%81%E7%BA%B8' print(unquote(url))總結(jié)
以上是生活随笔為你收集整理的【urllib】url编码问题简述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python乱码大赛_FishC工作室《
- 下一篇: 电话号码正则表达式(标准)