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 BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
Python文件操作类操作实例详解
Jul 11 Python
python中二维阵列的变换实例
Oct 09 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
Python操作Sql Server 2008数据库的方法详解
May 17 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
详解python使用turtle库来画一朵花
Mar 21 Python
深入浅析Python中的迭代器
Jun 04 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
python如何正确使用yield
May 21 Python
用Python进行栅格数据的分区统计和批量提取
May 27 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
MySQL相关说明
2007/01/15 PHP
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
深入探讨PHP中的内存管理问题
2011/08/31 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
详谈js模块化规范
2017/07/07 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
JS严格模式知识点总结
2018/02/27 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
生产部经理岗位职责
2013/12/16 职场文书
英语专业自荐书
2014/06/13 职场文书
目标责任书格式
2014/07/28 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL
Nginx限流和黑名单配置
2022/05/20 Servers
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android