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打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
Python文件操作基本流程代码实例
Dec 11 Python
分析Python中解析构建数据知识
Jan 20 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
python实现UDP协议下的文件传输
Mar 20 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
学习Python爬虫的几点建议
Aug 05 Python
python 调整图片亮度的示例
Dec 03 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实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
Javascript动画的实现原理浅析
2015/03/02 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
如何使用Python调整图像大小
2020/09/26 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
Java程序开发中如何应用线程
2016/03/03 面试题
幼教毕业生自我鉴定
2014/01/12 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
针对吵架老公保证书
2015/05/08 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
java设计模式--三种工厂模式详解
2021/07/21 Java/Android