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实现批量下载文件
May 17 Python
Python导出DBF文件到Excel的方法
Jul 25 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
python简单实现操作Mysql数据库
Jan 29 Python
python斐波那契数列的计算方法
Sep 27 Python
Python检测数据类型的方法总结
May 20 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
Python绘图之柱形图绘制详解
Jul 28 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
一文搞懂Python Sklearn库使用
Aug 23 Python
浅析Python中的随机采样和概率分布
Dec 06 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
解析yii数据库的增删查改
2013/06/20 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
$("").click与onclick的区别示例介绍
2014/09/25 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
浅谈react路由传参的几种方式
2021/03/23 Javascript
销售人员自我评价怎么写
2013/09/19 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
医院检讨书范文
2014/02/01 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android