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

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

内容简介: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模块,当看到输出结果时,还是蛮开心的。


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

查看所有标签

猜你喜欢:

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

无处不在的算法

无处不在的算法

[德]贝特霍尔德·弗金、赫尔穆特·阿尔特 / 机械工业出版社 / 2018-1-1

本书以简单易懂的写作风格,通过解决现实世界常见的问题来介绍各种算法技术,揭示了算法的设计与分析思想。全书共有41章,分为四大部分,图文并茂,把各种算法的核心思想讲得浅显易懂。本书可作为高等院校算法相关课程的本科生教材,也可作为研究人员、专业技术人员的常备参考书。一起来看看 《无处不在的算法》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具