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下载FTP上的文件夹的实现代码
Feb 10 Python
从零学python系列之数据处理编程实例(一)
May 22 Python
python比较两个列表大小的方法
Jul 11 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
PyQt实现界面翻转切换效果
Apr 20 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
python 负数取模运算实例
Jun 03 Python
python中uuid模块实例浅析
Dec 29 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
Python机器学习三大件之一numpy
May 10 Python
pytorch 6 batch_train 批训练操作
May 28 Python
总结Python使用过程中的bug
Jun 18 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
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python自定义主从分布式架构实例分析
2016/09/19 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Django admin美化插件suit使用示例
2017/12/12 Python
python取代netcat过程分析
2018/02/10 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
python支持多线程的爬虫实例
2019/12/21 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
美国第一香水网站:Perfume.com
2017/01/23 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
研发工程师的岗位职责
2013/11/18 职场文书
材料化学专业求职信
2014/07/15 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python