python小程序基于Jupyter实现天气查询的方法


Posted in Python onMarch 27, 2020

天气查询python小程序第0步:导入工具库第一步:生成查询天气的url链接第二步:访问url链接,解析服务器返回的json数据,变成python的字典数据第三步:对字典进行索引,获取气温、风速、风向等天气信息第四步:遍历forecast列表中的五个元素,打印天气信息完整Python代码
本案例是一个非常有趣的python小程序,调用网络API查询指定城市的天气,并打印输出天气信息。

你将学到以下技能:

向网络API发起请求,解析和处理服务器返回的json数据,可以迁移到各种各样的API中,如PM2.5查询,道路拥堵查询,自然灾害查询等。
python字典数据类型的常用操作
以下的代码运行在jupyter notebook的开发环境中,这是python数据分析、机器学习、人工智能开发最常用的开发界面,因为可以非常方便的撰写博客、插入图片和数学公式,并输出代码运行的中间结果,强烈建议你学习如何使用jupyter notebook。

第0步:导入工具库

import urllib.request
import gzip

第一步:生成查询天气的url链接

city_name = '上海'
# 将城市的中文名字编码成utf-8字符
urllib.parse.quote(city_name)
# 将编码后的城市名拼接在原始链接的后面
url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + urllib.parse.quote(city_name)

python小程序基于Jupyter实现天气查询的方法

第二步:访问url链接,解析服务器返回的json数据,变成python的字典数据

weather_data = urllib.request.urlopen(url).read()
# 访问url链接,获取字节串数据
weather_data

python小程序基于Jupyter实现天气查询的方法

# 将字节串解码为unicode编码
weather_data = gzip.decompress(weather_data)
weather_data

python小程序基于Jupyter实现天气查询的方法

# 将unicode编码解码为utf-8编码,显示中文
weather_data = weather_data.decode('utf-8')
weather_data

python小程序基于Jupyter实现天气查询的方法

# 将字符串两端的引号去掉,变成python中的字典数据
weather_dict = eval(weather_data)
weather_dict

python小程序基于Jupyter实现天气查询的方法

type(weather_dict)

第三步:对字典进行索引,获取气温、风速、风向等天气信息

weather_dict

python小程序基于Jupyter实现天气查询的方法

weather_dict['data']['yesterday']['high']
print('您查询的城市:',weather_dict['data']['city'])
print('--------------------------')
print('今天的天气')
print('温度',weather_dict['data']['wendu'])
print('感冒指数',weather_dict['data']['ganmao'])
print('--------------------------')
print('昨天的天气')
print('昨天:',weather_dict['data']['yesterday']['date'])
print('天气:',weather_dict['data']['yesterday']['type'])
print('最高气温:',weather_dict['data']['yesterday']['high'])
print('最低气温:',weather_dict['data']['yesterday']['low'])
print('风向:',weather_dict['data']['yesterday']['fx'])
print('风力:',weather_dict['data']['yesterday']['fl'][-5:-3])
print('--------------------------')

python小程序基于Jupyter实现天气查询的方法

第四步:遍历forecast列表中的五个元素,打印天气信息

weather_dict[‘data'][‘forecast']是一个包含五个元素的列表,每一个元素都是一个字典。

weather_dict['data']['forecast']

python小程序基于Jupyter实现天气查询的方法

for each in weather_dict['data']['forecast']:
  print('日期',each['date'])
  print('天气',each['type'])
  print(each['high'])
  print(each['low'])
  print('风向',each['fengxiang'])
  print('风力:',each['fengli'][-5:-3])
  print('--------------------------')

python小程序基于Jupyter实现天气查询的方法

完整Python代码

# 导入工具库
import urllib.request
import gzip

## 第一步:生成查询天气的url链接
city_name = input('请输入要查询的城市名称:')

# 将城市的中文名字编码成utf-8字符
urllib.parse.quote(city_name)
# 生成完整url链接
url = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name)

## 第二步:访问url链接,解析服务器返回的json数据,变成python的字典数据
# 获取服务器返回的json字节串数据
weather_data = urllib.request.urlopen(url).read()
# 将字节串数据解码为unicode中的utf-8数据
weather_data = gzip.decompress(weather_data).decode('utf-8')
# 将json数据转为python的字典数据
weather_dict = eval(weather_data)
if weather_dict.get('desc') == 'invilad-citykey':
  print('您输入的城市未收录')
  
# 第三步:对字典进行索引,获取气温、风速、风向等天气信息
print('您查询的城市:',weather_dict['data']['city'])
print('--------------------------')
print('今天的天气')
print('温度',weather_dict['data']['wendu'])
print('感冒指数',weather_dict['data']['ganmao'])
print('--------------------------')
print('昨天的天气')
print('昨天:',weather_dict['data']['yesterday']['date'])
print('天气:',weather_dict['data']['yesterday']['type'])
print('最高气温:',weather_dict['data']['yesterday']['high'])
print('最低气温:',weather_dict['data']['yesterday']['low'])
print('风向:',weather_dict['data']['yesterday']['fx'])
print('风力:',weather_dict['data']['yesterday']['fl'][-5:-3])
print('--------------------------')
# 第四步:遍历forecast列表中的五个元素,打印天气信息
for each in weather_dict['data']['forecast']:
  print('日期',each['date'])
  print('天气',each['type'])
  print(each['high'])
  print(each['low'])
  print('风向',each['fengxiang'])
  print('风力:',each['fengli'][-5:-3])
  print('--------------------------')

python小程序基于Jupyter实现天气查询的方法

到此这篇关于python小程序基于Jupyter实现天气查询的方法的文章就介绍到这了,更多相关python Jupyter 天气查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
用python实现百度翻译的示例代码
Mar 09 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
用Python读取几十万行文本数据
Dec 24 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
Python使用Pandas库常见操作详解
Jan 16 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python实现的北京积分落户数据分析示例
Mar 27 #Python
Pyspark获取并处理RDD数据代码实例
Mar 27 #Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 #Python
Python爬虫爬取、解析数据操作示例
Mar 27 #Python
python opencv进行图像拼接
Mar 27 #Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 #Python
Pyspark读取parquet数据过程解析
Mar 27 #Python
You might like
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
原生js实现抽奖小游戏
2019/06/27 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
node.js基础知识汇总
2020/08/25 Javascript
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
Python 列表理解及使用方法
2017/10/27 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
Collection和Collections的区别
2016/05/02 面试题
有限责任公司股东合作协议书范本
2014/10/30 职场文书
感谢信格式范文
2015/01/22 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
食品药品安全责任书
2015/05/11 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers
nginx.conf配置文件结构小结
2022/04/08 Servers
vue动态绑定style样式
2022/04/20 Vue.js