图片.png利用网上现成的的接口,用python练习了下
(又碰到了中文编码问题了:获取的页面源码 编码就是整不成中文)
此处选择的是 getSupportCity(获取支持的城市),是一个查看系统支持哪些城市的接口方法。
进入页面后滚动到最下面看到如下图的内容
先来看看GET,上面是请求,下面是服务器的返回内容。
写好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转换的话,运行会报错(类型不一样的变量不能进行拼接)
类型不一样的变量不能进行拼接.png2、参数 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,知道如何能显示中文的话,可以留言或者直接简信也可以,万分感谢!
网友评论
Req_url=URL % ("上海")
import requests
param={"byProvinceName":"上海"}
response = requests.get("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity",params=param)
print(response.text)