Python学习笔记(六)——查询天气脚本

栏目: Python · 发布时间: 7年前

内容简介:Python学习笔记(六)——查询天气脚本

做了一个查询天气的小脚本,使用的是中华万年历的天气API接口:url = r'http://wthrcdn.etouch.cn/weather_mini?citykey=101280101

首先是导入城市数据,根据输入的城市名称,查到city_code,这里我从网上找了个城市代码的文件。

用pickle导入,然后找出对应的code。

 1 # coding=utf-8    
 2 import requests
 3 import json
 4 import pickle
 5 
 6 #获取城市代码
 7 f = open('city_data.pkl', 'rb')
 8 city_file = pickle.load(f)
 9 f.close()
10 city_name = input('请输入想要查询的城市:')
11 city_code = city_file[city_name]

获得city_code后,将code传入url,使用requests.get得到数据。然后使用json.loads()解码。

我也是今天刚刚接触requests模块,这里给出requests的 官方文档

1 #利用城市名称查询天气
2 url = r'http://wthrcdn.etouch.cn/weather_mini?citykey=%s' %city_code
3 jsonStr = requests.get(url).text
4 
5 data = json.loads(jsonStr)
6 #print(data)
7 weather = data['data']

这样就得到了天气数据,data是这样子的:

{'data': {'yesterday': {'date': '14日星期日', 'high': '高温 20℃', 'fx': '无持续风向', 'low': '低温 9℃', 'fl': '<![CDATA[<3级]]>', 'type': '多云'}, 'city': '广州', 'aqi': '91', 'forecast': [{'date': '15日星期一', 'high': '高温 20℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 9℃', 'fengxiang': '无持续风向', 'type': '多云'}, {'date': '16日星期二', 'high': '高温 21℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 10℃', 'fengxiang': '无持续风向', 'type': '晴'}, {'date': '17日星期三', 'high': '高温 22℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 11℃', 'fengxiang': '无持续风向', 'type': '晴'}, {'date': '18日星期四', 'high': '高温 23℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 13℃', 'fengxiang': '无持续风向', 'type': '多云'}, {'date': '19日星期五', 'high': '高温 24℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 15℃', 'fengxiang': '无持续风向', 'type': '多云'}], 'ganmao': '昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。', 'wendu': '7'}, 'status': 1000, 'desc': 'OK'}

Python学习笔记(六)——查询天气脚本

剩下来的就是将这个字典里的各项数据取出来打印了。

1 #打印各项数据
2 print('城市:',weather['city'])
3 print('当前温度',weather['wendu'] + '℃')
4 print('提示',weather['ganmao'])
5 
6 for x in weather['forecast']:
7     print(x['date'],x['type'],x['high'],x['low'],x['fengxiang'])

整个运行下,得到的结果就是:

Python学习笔记(六)——查询天气脚本

完成。其实里面还有一项数据我没有打印出来,风力,因为在返回的data中是这个样子的

'fengli': '<![CDATA[<3级]]>',他的Value值是'<![CDATA[<3级]]>'。。。这个我还没想好要怎么处理。。。

在完成了这个后,才又发现,原来这个接口可以改下,直接传入城市名也是可以的。。。

url = r'http://wthrcdn.etouch.cn/weather_mini?city=city_name

这样,也就不需要再去open城市数据,找到对应的城市代码了。。。更简单了。

但是,一些异常的处理我还没有加入。如:当输入的城市错误或者不存在的时候,要给用户对应的提示。

但是作为初次尝试使用requests模块,当看到输出结果时,还是蛮开心的。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Black Box Society

The Black Box Society

Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00

Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具