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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 8,678评论 0 13
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,645评论 1 118
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,792评论 0 5
  • 引言 在这里我假设你已经看完了一篇Python教程,基本熟悉了Python的结构和语法,在命令行下的Python互...
    Programmer客栈阅读 65,145评论 0 17
  • 几个基本概念 bit二进制位, 是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只...
    西电大侠阅读 3,601评论 1 8