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编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
浅谈MySQL中的触发器
May 05 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python获取array中指定元素的示例
Nov 26 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 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/03/23 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
详解Javascript动态操作CSS
2014/12/08 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
详解node child_process模块学习笔记
2018/01/24 Javascript
详解vuex的简单使用
2018/03/12 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
pygame学习笔记(5):游戏精灵
2015/04/15 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
机电专业个人自荐信格式模板
2013/09/23 职场文书
团员学习总结的自我评价范文
2013/10/14 职场文书
2013年保送生自荐信格式
2013/11/20 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
节水倡议书
2015/01/19 职场文书
交通事故被告代理词
2015/05/23 职场文书
关于Python中*args和**kwargs的深入理解
2021/08/07 Python
Java使用Unsafe类的示例详解
2021/09/25 Java/Android