您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“python urllib.parse的常用方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“python urllib.parse的常用方法有哪些”吧!
urllib 是 python 的內(nèi)置模塊, 主要用于處理url相關(guān)的一些操作,例如訪問url、解析url等等。
有趣的是,urllib、urllib2曾經(jīng)同時(shí)出現(xiàn)在python2,python3又將兩個(gè)模塊合并成一個(gè),社區(qū)又有大神提供了一個(gè)urllib3的庫,都是用于處理網(wǎng)絡(luò)請(qǐng)求相關(guān)功能,不過這些包在 requests 都是弟弟啦。
而python3中,urllib包下面用的最多的恐怕還是parse模塊,主要處理url相關(guān)的操作。特別是爬蟲應(yīng)用中,用得多。
urlparse 方法是把一個(gè)完整的URL拆分成不同的組成部分,你可以根據(jù)自己的需求提取其中的某部分內(nèi)容。返回結(jié)果ParseResult是namedtuple的子類,由以下10部分組成,每部分既可以通過名字獲取也可以通過下表索引得到。
>>> from urllib import parse
>>> url = 'https://mp.weixin.qq.com/s?__biz=MjM5MzgyODQxMQ==&mid=2650366919&idx=1&sn=1b36a9f2c0921cdeac52942ec591a923#rd'
>>> result = parse.urlparse(url)
>>> print(result)
ParseResult(scheme='https', netloc='mp.weixin.qq.com', path='/s', params='', query='__biz=MjM5MzgyODQxMQ==&mid=2650366919&idx=1&sn=1b36a9f2c0921cdeac52942ec591a923', fragment='rd')
# 通過下標(biāo)獲取
>>> result[0]
'https'
# 協(xié)議
>>> result.scheme
'https'
# url資源路徑
>>> result.path
'/s'
# 查詢參數(shù)
>>> result.query
'__biz=MjM5MzgyODQxMQ==&mid=2650366919&idx=1&sn=1b36a9f2c0921cdeac52942ec591a923'
# 獲取主機(jī)名
>>> result.hostname
'mp.weixin.qq.com'
parse_qs 是將查詢參數(shù)這部分內(nèi)容解析裝換成字典對(duì)象
>>> parse.parse_qs(result.query)
{'__biz': ['MjM5MzgyODQxMQ=='], 'mid': ['2650366919'], 'idx': ['1'], 'sn': ['1b36a9f2c0921cdeac52942ec591a923']}
>>>
每個(gè)參數(shù)名對(duì)應(yīng)的值是一個(gè)列表對(duì)象,這是因?yàn)樵趗rl規(guī)范中,一個(gè)參數(shù)名可以對(duì)應(yīng)多個(gè)值。然通常在實(shí)際應(yīng)用場(chǎng)景中一個(gè)名字只會(huì)對(duì)應(yīng)一個(gè)值。
你可以用一行代碼將列表轉(zhuǎn)化為字符串
>>> {name: value[0] for name, value in parse.parse_qs(result.query).items()}
{'__biz': 'MjM5MzgyODQxMQ==', 'mid': '2650366919', 'idx': '1', 'sn': '1b36a9f2c0921cdeac52942ec591a923'}
反過來,如果由一個(gè)字典對(duì)象想轉(zhuǎn)換為url中的查詢參數(shù),那么就可以使用urlencode方法。
>>> d = {'__biz': 'MjM5MzgyODQxMQ==', 'mid': '2650366919', 'idx': '1'}
>>> parse.urlencode(d)
'__biz=MjM5MzgyODQxMQ%3D%3D&mid=2650366919&idx=1'
URL編碼
在URL的標(biāo)準(zhǔn)規(guī)范中,url只允許數(shù)字、字母和部分特殊符號(hào),如果有中文,就需要使用UTF-8進(jìn)行編碼,轉(zhuǎn)換成 %XX的形式,例如: 【中】UTF-8編碼的結(jié)果是:
>>> "中".encode()
b'\xe4\xb8\xad'
就會(huì)轉(zhuǎn)換成 %e4%b8%ad
>>> parse.quote("q=中")
'q%3D%E4%B8%AD'
>>>
對(duì)于特殊符號(hào),也會(huì)進(jìn)行成對(duì)應(yīng)的16進(jìn)制符號(hào), 例如 【=】 就轉(zhuǎn)換成了 %3D
unquote 是 quote 的逆向過程
URL解碼
>>> parse.unquote("q%3D%E4%B8%AD")
'q=中'
到此,相信大家對(duì)“python urllib.parse的常用方法有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。