目录
urlsplit(): 解析URL把params和并到path中
urllib库里还提供了parse模块,它定义了处理URL的标准接口,例如实现URL各部分的抽取,合并以及链接转换。它还支持如下协议的RUL处理:file,ftp,gopher,hdl,http,imap,mailto,mms,news,nntp,prospero,rsync,rtsp,rtspu,sftp,sip,sips,snews,svn,svn+ssh,telnet和wais。
urlparse() :实现URL的识别和分段
from urllib.parse import urlparse
result = urlparse("https://www.baidu.com/s/index.html;user?id=5#comment")
print(type(result) ,result)
结果:
<class 'urllib.parse.ParseResult'>
ParseResult(scheme='https', netloc='www.baidu.com', path='/s/index.html', params='user', query='id=5', fragment='comment')
可以看到:返回结果是一个ParseResult对象,它包含6个部分,分别是 scheme,nteloc,path,params,query,fragment。
大致可以看到urlparse() 方法将其拆分成6个部分。大体观察可以发现,解析是有特定的分隔符。
- :// :前面的就是scheme,代表协议;
- 第一个 / 符号前面便是netloc,即域名
- 后面是path,即访问路径;
- 分号; 前面是params
- 问号 ? 后面是查询条件query,一般用作GET类型的URL;
- 井号#,后面是描点,用户直接定位页面内部的下拉位置
总上大体得出一个标准的链接格式:scheme://netloc/path;params?query#fragment
urlparse() 方法其他API用法
def urlparse(url, scheme='', allow_fragments=True)
urlstring:这是必填项,即待解析的URL
scheme:他是默认的协议(比如http或是https等),假如这个链接没有携带信息,会将这个作为默认的协议。
from urllib.parse import urlparse
result = urlparse(url="www.baidu.com/s/index.html;user?id=5#comment",scheme="https")
print(type(result) ,result)
结果
<class 'urllib.parse.ParseResult'>
ParseResult(scheme='https', netloc='', path='www.baidu.com/s/index.html', params='user', query='id=5', fragment='comment')
1、提供的URL没有包含坐前面的scheme信息,但是通过指定默认的 scheme参数,返回的结果是https
from urllib.parse import urlparse
result = urlparse(url="http://www.baidu.com/s/index.html;user?id=5#comment",scheme="https")
print(type(result) ,result)
结果:
<class 'urllib.parse.ParseResult'>
ParseResult(sc