dmli的博客小屋

专注IT运维

使用python处理url及参数

在python3中,已将urllib库和urllib2库合并为urllib库,并提供了urllib.parse包来进行url的编解码。

下面通过一些例子,我们来处理这条url:http://www.qq.com/login.html?user=dmli&password=123456

1、使用 urlsplit() 方法拆分url。

from urllib.parse import urlsplit
url = 'http://www.qq.com/login.html?user=dmli&password=123456'
result = urlsplit(url)
print(result)

执行结果如下:

SplitResult(scheme='http', netloc='www.qq.com', path='/login.html', query='user=dmli&password=123456', fragment='')

返回一个SplitResult对象,可以通过属性或索引获取对应值:

 print(result[2],result.query)

执行结果如下:

/login.html user=dmli&password=123456

2、使用 parse_qs() 和 parse_qsl 拆分请求参数。

from urllib.parse import parse_qs
from urllib.parse import parse_qsl
query='user=dmli&password=123456'
print(parse_qs(query))
print(parse_qsl(query))

执行以上命令会得到一个字典和一个列表:

{'user': ['dmli'], 'password': ['123456']}
[('user', 'dmli'), ('password', '123456')]

3、使用 urlencode() 构造请求参数。

将字典类型的请求参数拼接到url中:

from urllib.parse import urlencode
parameter = {'user': 'dmli', 'password': '123456'}
base_url = 'http://www.qq.com/login.html?'
url = base_url + urlencode(parameter)
print(url)

得到完整的url:

http://www.qq.com/login.html?user=dmli&password=123456

4、使用 quote() 进行url编码。

将url里的中文转换为url编码:

from urllib.parse import quote
keyword = '博客'
url = 'http://www.qq.com/search?wd=' + quote(keyword)
print(url)

执行结果如下:

http://www.qq.com/search?wd=%E5%8D%9A%E5%AE%A2

5、使用 unquote() 进行url解码:

from urllib.parse import unquote
url = 'http://www.qq.com/search?wd=%E5%8D%9A%E5%AE%A2'
print(unquote(url))

执行结果如下:

http://www.qq.com/search?wd=博客


发表评论:

Copyright© dmli 2015-2019