天气预报apipython_Python 接口测试练习(天气预报)

利用网上现成的的接口,用python练习了下

(又碰到了中文编码问题了:获取的页面源码 编码就是整不成中文)

图片.png

此处选择的是 getSupportCity(获取支持的城市),是一个查看系统支持哪些城市的接口方法。

进入页面后滚动到最下面看到如下图的内容

先来看看GET,上面是请求,下面是服务器的返回内容。

GET 和POST 请求.png

写好python代码后,运行发现参数输入all 或者 不输 是OK的,输入中文城市就显示不了,中文依旧是bytes类型的,我用 str 进行了转换

# -*- coding: utf-8 -*-

# __author__ = Carina

from urllib.request import urlopen

from urllib.request import Request

url = http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=

print(type(url)) # 输出URL的类型

string = str(上海.encode(utf-8))

print(type(string)) # 输出参数的类型

url_all = url + string

print(url_all) # 输出拼接后的URL

req = Request(url_all) # 创建一个Request对象 并赋给变量req

data = urlopen(url_all).readlines() # 打开网址并读取数据

print(type(data))

print(data)

显示不了中文.png

接下来说下所遭遇的坑

1、如参数 string为中文,不进行str转换的话,运行会报错(类型不一样的变量不能进行拼接)

类型不一样的变量不能进行拼接.png

2、参数 string为中文,不进行encode转换,运行报错

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 70-71: ordinal not in range(128)

寻求度娘,说在文件头部加入以下代码

import sys

reload(sys)

sys.setdefaultencoding(utf-8)()

但这方法不适用于3.X,所以没用:Python3 已经取消了str, 让所有的字符串都是 unicode

写在最后的话

如果你用的也是3,知道如何能显示中文的话,可以留言或者直接简信也可以,万分感谢!

利用网上现成的的接口,用python练习了下 (又碰到了中文编码问题了:获取的页面源码 编码就是整不成中文) 图片.png 此处选择的是 getSupportCity(获取支持的城市),是一个查看系统支持哪些城市的接口方法。 进入页面后滚动到最下面看到如下图的内容 先来看看GET,上面是请求,下面是服务器的返回内容。 GET 和POST 请求.png 写好python代码后,运行发现参数输入all 或者 不输 是OK的,输入中文城市就显示不了,中文依旧是bytes类型的,我用 str 进行了转换 # -*- coding: utf-8 -*- # __author__ = Carina from urllib.request import urlopen from urllib.request import Request url = http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName= print(type(url)) # 输出URL的类型 string = str(上海.encode(utf-8)) print(type(string)) # 输出参数的类型 url_all = url + string print(url_all) # 输出拼接后的URL req = Request(url_all) # 创建一个Request对象 并赋给变量req data = urlopen(url_all).readlines() # 打开网址并读取数据 print(type(data)) print(data) 显示不了中文.png 接下来说下所遭遇的坑 1、如参数 string为中文,不进行str转换的话,运行会报错(类型不一样的变量不能进行拼接) 类型不一样的变量不能进行拼接.png 2、参数 string为中文,不进行encode转换,运行报错 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 70-71: ordinal not in range(128) 寻求度娘,说在文件头部加入以下代码 import sys reload(sys) sys.setdefaultencoding(utf-8)() 但这方法不适用于3.X,所以没用:Python3 已经取消了str, 让所有的字符串都是 unicode 写在最后的话 如果你用的也是3,知道如何能显示中文的话,可以留言或者直接简信也可以,万分感谢!
经验分享 程序员 微信小程序 职场和发展