- 帖子
- 2
- 精华
- 0
- 积分
- 25
- 阅读权限
- 10
- 注册时间
- 2017-12-18
- 最后登录
- 2018-3-19
|
看到基础课件“天气查询”章节,我个人用的版本是3.5。个人小白一枚(真的很白),抛砖引玉。先上代码部分:
# -*- coding: utf-8 -*-
import urllib.request
import json
from city import city
cityname=input('你想查哪个城市的天气?')
citycode=city.get(cityname)
#print(citycode)
if citycode:
try:
url=('http://www.weather.com.cn/data/cityinfo/%s.html'%citycode)
content=urllib.request.urlopen(url).read()
#print(content)
content1=content.decode('utf-8')
#print(content1)
data=json.loads(content1)
print(data)
result=data['weatherinfo']
str_temp=('%s\n%s - %s')%(result['weather'],result['temp1'],result['temp2'])
print(str_temp)
except:
print('查询失败')
else:
print('没有找到该城市')
这里面有几个需要注意的地方:
1、city.py 需要进行转码。老师的文件我也没看懂是什么编码的,反正开始的时候程序老是报“utf-8”不能解码。我用的是notepad++转换为utf-8.
2、Python3.0以后的urllib2模块已经合并,开始我也不知道该用什么。问度娘,还真有。找到urllib.request,看了几个网上的例子大体知道该怎么写了。
3、继续出错,来到“content=urllib.request.urlopen(url).read()”。每次程序运行都会告诉你,json.loads(content1)的参数不能是byte类型。窝草,什么鬼?赶紧打印输出一下
你想查哪个城市的天气?北京
101010100
b'{"weatherinfo":{"city":"\xe5\x8c\x97\xe4\xba\xac","cityid":"101010100","temp1":"-2\xe2\x84\x83","temp2":"16\xe2\x84\x83","weather":"\xe6\x99\xb4","img1":"n0.gif","img2":"d0.gif","ptime":"18:00"}}'
中间那些XXOO什么鬼?怎么跟老师贴图不一样?既然不能是byte类型,强制转换一下。str()套上去,结果还是。。。
是不是那些XXOO和老师贴图那样变成汉字就行了?我知道"\xe5\x8c\x97\xe4\xba\xac"肯定就是“北京”。但是需要转码,继续度娘,于是就有了content.decode('utf-8')。
跳过以上三个坑,恭喜终于在Python3.5上实现代码!
|
|