python小程序基于Jupyter实现天气查询的方法

作者:w²大大 时间:2021-05-30 10:39:40 

天气查询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实现天气查询的方法

来源:https://blog.csdn.net/qq_42585108/article/details/105113248

标签:python,Jupyter,天气查询
0
投稿

猜你喜欢

  • python通过定义一个类实例作为ftp回调方法

    2021-08-16 14:12:03
  • 不用为美化select烦恼模仿combox(select)控件

    2007-08-04 21:08:00
  • Python写了个疫情信息快速查看工具实例代码

    2021-10-31 15:26:52
  • python 读写、创建 文件的方法(必看)

    2023-08-07 11:37:40
  • Django如何重置migration的几种情景

    2021-11-17 14:35:34
  • 教你怎样在Oracle数据库中高速导出/导入

    2009-02-04 16:59:00
  • 在pycharm中显示python画的图方法

    2023-07-28 09:44:39
  • 不能安装SQL Server 2005的问题及解决方法

    2008-12-26 17:41:00
  • Python实现图片批量加入水印代码实例

    2022-07-13 10:47:04
  • pytorch 如何把图像数据集进行划分成train,test和val

    2023-12-26 15:28:10
  • DOM_window对象属性之--clipboardData对象操作代码

    2011-02-05 10:49:00
  • asp中常用的文件处理函数

    2009-01-08 18:09:00
  • CSS实现完美垂直居中

    2007-09-22 09:29:00
  • python使用opencv实现马赛克效果示例

    2022-10-16 04:23:30
  • 拖拽翻页(ThrowPage)详解 cool

    2009-12-02 09:54:00
  • 关于jupyter打开之后不能直接跳转到浏览器的解决方式

    2023-07-17 01:39:55
  • ASP调用数据库常见错误的解决

    2007-09-07 10:05:00
  • CSS Sprites

    2007-10-10 13:21:00
  • 解决Mac下首次安装pycharm无project interpreter的问题

    2023-02-11 04:32:15
  • Python闭包与装饰器原理及实例解析

    2023-04-08 19:44:30
  • asp之家 网络编程 m.aspxhome.com