天气预报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,知道如何能显示中文的话,可以留言或者直接简信也可以,万分感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值