在python2中urlencode函数在urllib中,而不是urllib2,在python3中没有了urllib和urllib的区别,统一到了urllib包,urlencode方法也被放在了urllib.parse模块中,同时还增加了quote和unquote方法
方法/步骤
1、打开开发工具IDLE,新建‘urlencode.py’文件,并写代码如下:importurllib.requestcity='上海'key='yourkey'dvar={'city':city,'key':key}incode=urllib.parse.urlencode(dvar)print(incode)print(urllib.parse.quote(dvar))这里用的是某和的天气接口,key仅做演示
2、F5运行代码打印信息如下图,urlencode把字典类型数据中文转为utf8编码以‘%’开头key1=vlau1e&key2=value2格式,而quote只能用于string类型
3、测试quote函数改写代码如下;importurllib.requestcity='上海'key='yourkey'dvar={'city':city,'key':key}incode=urllib.parse.urlencode(dvar)print(incode)print(urllib.parse.quote(city))
4、F5运行代码打印信息如下图,可以发现实现在处理中文字符的编码后结果是一样的,还有一个函数quote_plus这个函数能将特殊字符‘/’也进行编码,具体使用时候需要测试编码结果,不可能都记住使用范围
5、测试发送请求,修改代码如下;importurllib.requestcity=补朱锚卦39;上海刻八圄俏9;key='yourkey'dvar={'city':city,'key':key}incode=urllib.parse.urlencode(dvar)url='http://apis.juhe.cn/simpleWeather/query?'+incodes=urllib.request.urlopen(url)print(s.read())
6、F5运行代码,打印内容如下图
7、使用quote就只能自行拼接字符串请求了,注意解码响应内容,代码如下:importurllib饱终柯肢.requestcity='上海'key='yourkey泌驾台佐39;dvar={'city':city,'key':key}incode=urllib.parse.urlencode(dvar)url='http://apis.juhe.cn/simpleWeather/query?'+'city='+urllib.parse.quote(city)+'&key='yourkey's=urllib.request.urlopen(url)print(s.read().decode('utf8'))
8、F5运行代码,正确打印出了结果