python3 urllib库中parse模块的使用

parse 这里介绍十个url的常用处理方法,用于url的解析和构造

1.urlparse(将url拆分成6个部分,放在一个元祖里面)

import urllib.parse
print(urllib.parse.urlparse('http://www.zhihu.com/reqj;user?id=3#dsjf'))
#  结果:ParseResult(scheme='http', netloc='www.zhihu.com', path='/reqj', params='user', query='id=3', fragment='dsjf')

# import urllib.parse
# r = urllib.parse.urlparse('http:')
# print(type(r),r)
# 结果:<class 'urllib.parse.ParseResult'> ParseResult(scheme='http', netloc='', path='', params='', query='', fragment='')

scheme=’http’, 表示请求协议 必须要有
netloc=’www.zhihu.com’, \表示请求的url 默认为空
path=’/reqj’,\请求路径 默认为空
params=’user’, \请求的参数 默认为空
query=’id=3’, \请求的查询条件 默认为空
fragment=’dsjf’ 标识符 默认为空

2.unurlparse 构造出url,但必须接受可迭代对象的参数,数量还是6个

import urllib.parse
data = ('http', 'www.zhihu.com', 'reqj', 'user', 'id=3', '戊二醛翁')
print(urllib.parse.urlunparse(data))
# 长度不对的时候报错:ValueError: not enough values to unpack (expected 7, got 6)

3.ursplit

import urllib.parse

print(urllib.parse.urlsplit('http://www.zhihu.com/reqj;user?id=3#dsjf'))
结果:SplitResult(scheme='http', netloc='www.zhihu.com', path='/reqj;user', query='id=3', fragment='dsjf')

解释: data那部分的内容,合并到path中去了
这个函数和urlparse()功能类似,唯一的区别是这个函数不会将url中的param分离出来;
就是说相比urlparse()少一个param元素,返回的元组元素参照urlparse()的元组表,少了一个param元素;

4.urlunsplit 与 urlunparse相似,只不过少传一个参数

import urllib.parse
data = ('http', 'www.zhihu.com', 'reqj', 'user', 'id=3')
print(urllib.parse.urlunsplit(data))

5.urljoin 一个基础的url和其他url相互结合

import urllib.parse

print(urllib.parse.urljoin('http://www.zhihu.com', '/index.html'))
# 结果:http://www.zhihu.com/index.html

print(urllib.parse.urljoin('http://www.zhihu.com/index.html', '/haha.html'))
# 结果:# print(urllib.parse.urljoin('http://www.zhihu.com', '/index.html'))

自动分析出基础url的scheme,netloc,path,缺少新的url会自动补充出来,有的话使用新的,
所以基础的url的params , query, fragment 是不起作用的

6.urlencode ,将字典中的参数转化成url中的参数来构造函数,在get构造函数的时候很好用

import urllib.parse

data = {
    'name': 'czh'
}
url = 'http://www.zhihu.com?'
url = url + urllib.parse.urlencode(data)
print(url)
# 结果:http://www.zhihu.com?name=czh

7.parse_qs, 将get请求参数转化成字典

import urllib.parse
data = 'name=czh'
print(urllib.parse.parse_qs(data))
# # 结果:{'name': ['czh']}

8.parse_qsl 将请求参数转化成列表,列表中每一个元素都是元组,元组的第一个参数是参数名,第二个是参数值

import urllib.parse
data = 'name=czh'
print(urllib.parse.parse_qsl(data))
# 结果:[('name', 'czh')]

9.quote 传递参数是中文的时候可以使用quote进行url编码

import urllib.parse
data = '中国'
print(urllib.parse.quote(data))
# 结果:%E4%B8%AD%E5%9B%BD

10.unquote 对url编码进行解码

import urllib.parse
data = '%E4%B8%AD%E5%9B%BD'
print(urllib.parse.unquote(data))
# 结果:中国
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值