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 读取excel文件生成sql文件实例详解
May 12 Python
Python实现调度算法代码详解
Dec 01 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
python日期时间转为字符串或者格式化输出的实例
May 29 Python
Python常见数据类型转换操作示例
May 08 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
如何利用pygame实现打飞机小游戏
May 30 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
用JS实现的一个include函数
2007/07/21 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
jQuery后代选择器用法实例
2014/12/23 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
Python的Django框架中的数据库配置指南
2015/07/17 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python找出因数与质因数的方法
2019/07/25 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
django ajax发送post请求的两种方法
2020/01/05 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
python利用platform模块获取系统信息
2020/10/09 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
static函数与普通函数有什么区别
2015/12/25 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
北京导游词
2015/02/12 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers