解析鏈接
文章目錄
一、簡介 urllib.parse
它定義了處理 URL 的標準接口,例如實現 URL 各部 分的抽取、合併以及鏈接轉換。
二、函數介紹
1 urlparse()6
功能:實現URL的識別和分段
(1)代碼實例:
from urllib import parse
url1='http://www.baidu.com/index.html;user?id=5#comment'
result=parse.urlparse(url1)
print(type(result))
print(result)
運行結果:
<class 'urllib.parse.ParseResult'>
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.html', params='user', query='id=5', fragment='comment')
(2)定義域值域
url1='http://www.baidu.com/index.html;user?
result=parse.urlparse(url1)
定義域:
URL
參數:
urllib.parse.urlparse(urlstring, scheme=”, allow_fragments=True)
urlstring :
待解析的URL
scheme:
默認協議,如果解析URL中有協議時,解析爲原有的協議,URL中沒有協議,則解析爲默認協議。
allow_fragments:
是否忽略fragment,如果被設置爲False,fragment部分就會被忽略,它被解析爲path,parameter,或者query的一部分,而fragment部分爲空。
值域:
(元組)ParseResult對象 一個標準的鏈接格式:
scheme://netloc/path;params?query#fragment
;後面是參數
?後面是查詢條件 query, 一般用作 GET 類型的 URL;
#後面是錨點,用於直接定位頁面內部的下拉位置。
(3)ParseResult中各屬性的獲取方法
返回結果 ParseResult 實際上是一個元組,我們可以用索引順序來獲取,也可以用屬性名獲取。
2 urlunparse()
功能:構造URL
(1)代碼實例:
from urllib.parse import urlunparse
data=['https','www.baidu.com','index.html','user','id=5','comment']
print(urlunparse(data))
https://www.baidu.com/index.html;user?id=5#comment
(2)定義域值域
定義域:
它接受的參數是一個可迭代對象, 但是它的長度必須是 6, 否則會拋出參數數量不足或者過多的問題,可使用列表元組等數據類型。
值域:
一個包含六個字段的完整URL
3 urlsplit()5
與urlparse()非常相似,只是parmas部分被分到path,只有五個部分
返回結果是 SplitResult , 它其實也是一個元組類型, 既可以用屬性獲取值,也可以 用索引來獲取
4 urlunsplit()
與 urlunparse()類似,它也是將鏈接各個部分組合成完整鏈接的方法,傳人的參數也是一個可迭 代對象,例如列表、 元組等,唯一的區別是長度必須爲 5
5 urljoin()
功能:
(1)我們可以提供一個 base_url (基礎鏈 接 ) 作爲第一個參數,將新的鏈接作爲第二個參數,該方法會分析 base_url 的 scheme、 netloc 和 path 這 3 個內容並對新鏈接缺失的部分進行補充,最後返回結果。
定義域:
基礎URL,待補充完整的URL
值域:
補充好scheme,netloc,path的新URL
注意:
ba咒一url 提供了三項內容 scheme、 netloc 和 path。 如果這 3 項在新的鏈接裏不存在, 就予以補充;如果新的鏈接存在,就使用新的鏈接的部分。 而 base_url 中的 params 、 query 和 fragment 是不起作用的。
6urlencode()字典–字符串
將字典格式轉化爲URL中查詢字符串需要的格式
(1)代碼實例:
from urllib.parse import urlencode
params={'name':'yue',
'age':'21'}
base_url='https://www.baidu.com?'
url=base_url+urlencode(params)
print(url)
運行結果
https://www.baidu.com?name=yue&age=21
(2)定義域:
字典
(3)值域:
字符形式的字典,用於構造URL中的查詢字符串。
7parse_qs()字符串–字典
功能:
有了序列化,必然就有反序列化。 如果我們有一串 GET 請求參數,利用 parse_qs()方法, 就可 以將它轉回字典
代碼實例:
from urllib.parse import parse_qs
query='name=yue&age=21'
dict=parse_qs(query)
print(dict)
運行結果
{'name': ['yue'], 'age': ['21']}
定義域:
URL中的查詢字符串
值域:
字典
8 parse_qsl()字符串–元組組成的列表
將參數轉化爲元組組成的列表
代碼實例
from urllib.parse import parse_qsl
query= 'name=germey&age=22' print(parse_qsl(query))
運行結果如下:
[('name’,’germey'), ('age ', '22')]
定義域:
URL中的查詢字符串
值域:
元組組成的列表
summary:
urlencode 將字典序列化爲字符串
parse_qs將字符串轉化爲字典
parse_qsl將字符串轉化爲元組組成的列表
9 quote()中文–編碼
功能:將中文字符轉化爲URL編碼
代碼實例
from urllib.parse import quote
from urllib.request import urlopen
keyword='明月'
base_url='https://www.baidu.com?wd='
url=base_url+quote(keyword)
response=urlopen(url)
print(response.read().decode('utf-8'))
定義域:
中文
值域:
格式化可用於URL的中文編碼
10 unquote()
解碼URL