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']}
网友评论