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登录Dr.com思路以及代码分享
Jun 25 Python
Python随机生成信用卡卡号的实现方法
May 14 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
pyqt5自定义信号实例解析
Jan 31 Python
python3实现单目标粒子群算法
Nov 14 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
Python如何实现机器人聊天
Sep 10 Python
python 代码运行时间获取方式详解
Sep 18 Python
pandas 数据类型转换的实现
Dec 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 接口类与抽象类的实际作用
2009/11/26 PHP
PHP 一个随机字符串生成代码
2010/05/26 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
php身份证号码检查类实例
2015/06/18 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
php 基础函数
2017/02/10 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
简析Python的闭包和装饰器
2016/02/26 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python中with及contextlib的用法详解
2017/06/08 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
财务主管的岗位职责
2013/12/30 职场文书
2014年工程师工作总结
2014/11/25 职场文书
教师节感谢信
2015/01/22 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书