urllib.parse模块用于解析URL,支持对URL的操作包括拆分、拼接、编码、解码等。
urllib.parse模块在功能上分为两大类:URL parsing(URL解析)和URL quoting(URL引用)
一 、URL parsing
拆分和拼接:将url字符串拆分为各种组件,或者将url组件合并为url字符串
(1)urlparse()/urlsplit()
(1)urllib.parse.urlparse()函数:拆分url的6个组成部分
函数定义
urlparse(url, scheme='', allow_fragments=True)
Parse a URL into 6 components:
<scheme>://<netloc>/<path>;<params>?<query>#<fragment>
Return a 6-tuple: (scheme, netloc, path, params, query, fragment).
注意6个组成部分的url的path和params之间是分号
参数
scheme:采用的协议。如果在urlstring中已指定,该参数可省略
注意的是只有在由"//"引导下的netloc字符串才会被正确识别,否则将被认为是path
allow_fragments:设置是否忽略fragment即锚点
该参数默认为True,即不忽略。如果设置为False,则该参数会被忽略
返回值
是一个<class 'urllib.parse.ParseResult'>对象,实际是一个包含url中6个元素的具名元组
具名元组本质还是一个元组 因此可通过元组下标访问ParseResult对象
同时具名元组的所有方法都适用于ParseResult对象
因此可通过具名元组关键字如scheme、netloc等访问 (推荐关键字 代码自动补全)
>>> import urllib.parse
>>> url= "http://www.example.org/default.html?ct=32&op=92&item=98"
>>> urllib.parse.urlparse(url)
ParseResult(scheme='http', netloc='www.example.org', path='/default.html', params='', query='ct=32&op=92&item=98', fragment='')
>>> type(urllib.parse.urlparse(url))
<class 'urllib.parse.ParseResult'>
#也可以是
# url= "www.example.org/default.html?ct=32&op=92&item=98"
# pr=urllib.parse.urlparse(url,‘http’)
pr=urllib.parse.urlparse(url)
>>> pr.scheme
'http'
>>> pr[0]
'http'
注意区分urllib.parse.urlsplit()函数
具名元组传送门https://blog.youkuaiyun.com/bear_n/article/details/72837332)
(2)urllib.parse.urlsplit()函数:拆分url成5个部分,params将被合并到path中 并以分号隔开
其他用法与urlparse完全相同
函数定义
urlsplit(url, scheme='', allow_fragments=True)
Parse a URL into 5 components:
<scheme>://<netloc>/<path>?<query>#<fragment>
Return a 5-tuple: (scheme, netloc, path, query, fragment).
参数(同urlparse())
scheme:采用的协议。如果在urlstring中已指定,该参数可省略
注意的是只有在由"//"引导下的netloc字符串才会被正确识别,否则将被认为是path
allow_fragments:设置是否忽略fragment即锚点
该参数默认为True,即不忽略。如果设置为False,则该参数会被忽略
返回值
是一个<class 'urllib.parse.SplitResult'>对象 实际是一个包含5个元素的具名元组
具名元组本质还是一个元组 因此可通过元组下标访问SplitResult对象
同时具名元组的所有方法都适用于SplitResult对象
因此可通过具名元组关键字如scheme、netloc等访问 (推荐关键字 代码自动补全)
>>> import urllib.parse
>>> url= "http://www.example.org/default.html?ct=32&op=92&item=98"
>>> pr=urllib.parse.urlsplit(url)
#也可以是
# url= "www.example.org/default.html?ct=32&op=92&item=98"
# pr=urllib.parse.urlsplit(url,‘http’)
>>> pr
SplitResult(scheme='http', netloc='www.example.org', path='/default.html', query='ct=32&op=92&item=98',