溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python urllib.parse的常用方法有哪些

發(fā)布時(shí)間:2021-12-17 14:58:56 來源:億速云 閱讀:399 作者:iii 欄目:大數(shù)據(jù)

本篇內(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)用中,用得多。

python urllib.parse的常用方法有哪些

一、urlparse

urlparse 方法是把一個(gè)完整的URL拆分成不同的組成部分,你可以根據(jù)自己的需求提取其中的某部分內(nèi)容。返回結(jié)果ParseResult是namedtuple的子類,由以下10部分組成,每部分既可以通過名字獲取也可以通過下表索引得到。

python urllib.parse的常用方法有哪些

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

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'}

三、urlencode

反過來,如果由一個(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'

四、quote

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

python urllib.parse的常用方法有哪些

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

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

向AI問一下細(xì)節(jié)

免責(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)容。

AI