urllib库是python内置的处理HTTP请求的库,用它来请求url我们用的不多,但是它提供的urllib.parse工具倒是很好用。url.parse :定义了url的标准接口,实现url的各种抽取、解析,合并,编码,解码。
下面来看urlparse提供的接口:
from urllib.parse import urlparse
url = 'https://book.qidian.com/info/1004608738?wd=123&page=20#Catalog'
result = urlparse(url)
print(result)
print(result.scheme)
"""
(scheme='https', netloc='book.qidian.com', path='/info/1004608738', params='', query='wd=123&page=20', fragment='Catalog')
scheme:表示协议
netloc:域名
path:路径
params:参数
query:查询条件,一般都是get请求的url
fragment:锚点,用于直接定位页
面的下拉位置,跳转到网页的指定位置
"""
urlparse将url解析为协议,域名,路径,参数,查询条件,锚点六大派。
通过访问scheme,netloc,path,params,query,fragment属性分别得到url的协议,域名,路径,参数,查询条件,锚点。
传递一个基础链接,根据基础链接可以将某一个不完整的链接拼接为一个完整链接
base_url = 'https://book.qidian.com/info/1004608738?wd=123&page=20#Catalog'
sub_url = '/info/100861102'
full_url = parse.urljoin(base_url,sub_url)
print(full_url)
https://book.qidian.com/info/100861102
from urllib.parse import urlencode
parmas={
'name':'张愿斌',
'age':17
}
result=urlencode(parmas)
print(result)
结果:name=%E5%BC%A0%E6%84%BF%E6%96%8C&age=17
from urllib.parse import parse_qs
parmas='name=%E5%BC%A0%E6%84%BF%E6%96%8C&age=17'
result=parse_qs(parmas)
print(result)
结果:{'name': ['张愿斌'], 'age': ['17']}
from urllib.parse import quote
parmas='张愿斌'
result=quote(parmas)
print(result)
结果:%E5%BC%A0%E6%84%BF%E6%96%8C
from urllib.parse import unquote
parmas='%E5%BC%A0%E6%84%BF%E6%96%8C'
result=unquote(parmas)
print(result)
``
结果:张愿斌