python学习笔记——urlib中对url编码和解码

1、编码的作用

有时候url的组成中包含中文字符,百度搜索结果页就是典型的例子

# https://www.baidu.com/s?wd=百度

from urllib import request

url ='http://www.baidu.com/s?wd=刘德华'

resp = request.urlopen(url)

print(resp)

结果

UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-12: ordinal not in range(128)

2、编码

这里我们需要对url进行编码

from urllib import parse

params = {'name':"张三","age":18,'greet':'hello world'}

result = parse.urlencode(params)

结果

name=%E5%BC%A0%E4%B8%89&age=18&greet=hello+world

同样我们对url进行解码编辑

paramss = { 'wd':'刘德华' }

url='http://www.baidu.com/s'+'?'+parse.urlencode(paramss)

print(url)

结果如下,网址可以直接点开请求成功

http://www.baidu.com/s?wd=%E5%88%98%E5%BE%B7%E5%8D%8E

3、解码

解码是为了提取网址中的信息,对上面编码成功的result再进行解码

params = parse.parse_qs(result)

print(params)

解码结果如下,可以看到结果变成了一个列表跟原数据不一样

{'name': ['张三'], 'age': ['18'], 'greet': ['hello world']}

你可能感兴趣的:(python学习笔记——urlib中对url编码和解码)