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获取本机mac地址和ip地址的方法
Apr 29 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
Flask框架模板继承实现方法分析
Jul 31 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
python selenium xpath定位操作
Sep 01 Python
Python解析微信dat文件的方法
Nov 30 Python
Python异常类型以及处理方法汇总
Jun 05 Python
python神经网络学习 使用Keras进行简单分类
May 04 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不用递归遍历目录下所有文件的代码
2014/07/04 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
php 类自动载入的方法
2015/06/03 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Python数据类型详解(一)字符串
2016/05/08 Python
python 全局变量的import机制介绍
2017/09/07 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
高二美术教学反思
2014/01/14 职场文书
英语专业自荐书
2014/06/13 职场文书
三八妇女节标语
2014/10/09 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
介绍信模板
2015/01/31 职场文书
2015小学师德工作总结
2015/07/21 职场文书
深入解析MySQL索引数据结构
2021/10/16 MySQL
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL