(共40张PPT)
第 5 课 查询天气
——requests 库和 json模块的应用
广东高等教育出版 第八册下
新知导入
图 2-5-1 天气预报
新知讲解
天气预报对人们的生活、生产和学习等各种社会活动都有着重要意义,我们出门旅行需要根据天气预报情况提前做好穿着准备。
互联网上有大量的天气数据,如何编写从中查询所需的数据呢?
快
门
乐
新知讲解
交
流
我们可以通过哪些渠道查询天气?查询天气时,你主要关注哪些指标?
我们可以通过电视、手机、报纸、上网查询等途径查询天气;关注温度、湿度、风力、风向太阳照射强度等
新知讲解
一、分析问题
本课的任务是编写程序查询制定城市的天气情况。程序要解决的关键问题:一是如何到指定的天气网站获取数据;二是如何筛选出需要的天气数据,并按日常习惯表达出来。
新知讲解
要解决以上问题,在程序中需要利用以下两个库(模块)
(1)利用requests库向气象网站发送请求,获取天气数据
(2)利用json模块将获取的天气数据转换成便于Python处理的数据格式
新知讲解
本课我们利用中华万年历网站提供的天气预报API接口获取数据。例如,通过该接口获取北京的天气数据如下:
http://wthrcdn.etouch.cn/weather_min?city=北京
新知讲解
上网了解有哪些网站提供API数据接口:
实
践
百度百科:http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=关键字&bk_length=600
气象局:
http://m.weather.com.cn/data/101010100.html
爱奇艺:http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=jsonp9
新知讲解
二、学习新知
利用requests库能向网页发送请求,从而获取数据。 requests库属于扩展库需要先安装才能使用。在DSO方式中安装requests库的命令为:
在Python中导入该库的命令为:
(一)requests库
pip install requests
import requests
新知讲解
requests 库获取的数据对象包含多个属性,分别表示网页不同的信息。
例如,向Python官网发送请求,并打印多项页面信息的代码如下:
新知讲解
#getpython.py
import requests
#使用requests库的get函数向指定网址发送请求,返回数据resp
resp= requests.get(‘http://www.python.org/’)
Print(resp.text) #打印网页的页面内容
#打印请求的返回状态,200表示连接成功,404表示失败
print(resp.status_code)
新知讲解
找一个你想查询的网址,然后在IDLE交互模式下进行操作,观察输出结果,理解各项属性的含义。
1.导入requests库
2.用get()函数发送请求,返回数据存放到resp中
3.再用print()函数输出表2-5-1所列的各种属性
实
践
新知讲解
属性实例 描述
resp.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
Resp.text 反馈内容的文本形式,即访问网址的页面内容
Resp.encoding 反馈内容的编码格式
resp.content 反馈内容的二进制形式
resp.headers 反馈内容的头信息
表2-5-1 反馈数据的部分属性说明
新知讲解
由于从中华万年网获取的是字符串形式的天气数据(JSON格式),因此要用json模块将JSON格式的数据准换为Python的专属数据格式,才能更方便进行处理。
(二)json模块
新知讲解
import json
json莫快递包含在标准库中,导入该模块的命令如下:
新知讲解
json模块包含多个函数,其中:
(1)json.dumps(),表示将Python对象转换成JSON格式的数据
(2)json.loads(),表示将JSON格式字符串形式数据转换成Python对象
例如,将JSON格式的数据a转换成Python对象存到b中的代码如下:
b=json.loads(a)
新知讲解
三、设计算法
根据前面分析,查询天气的算法思路如下:
1、导入requests库以及json模块
2、输入查询城市名city
3、发送网络请求,获取天气数据response
4、将response.txet转换成Python对象,并保存到weather中
5、判断天气数据是否获取成功,成功则输出天气数据。否则输出“没有该城市的天气数据”
新知讲解
四、编写程序
(一)获取天气数据
根据前面的算法,获取天气数据的代码如下:
#weather.py
import rsquests,json
city=input('请输入要查询的城市')
#将加上城市名的API接口网址存到url中\
url='http://wthrcdn.etouch.cn/weather_mini?city='+city
#发送网络请求,获取天气数据存到response中
response=requests.get(url)
#将JSON格式的数据转换成Python对象存到weather中
weather=json.loads(response.text)
新知讲解
新知讲解
探
究
在程序weather.py最后加上一行代码‘print(weather)’。运行程序,输入你所在的城市(如图2-5-2所示),观察输出的天气数据提供了哪些信息?
新知讲解
图 2-5-2
新知讲解
(二)输出天气数据
分析图2-5-2可知,从网络中获取的天气数据包含了多项内容,但这些数据难于直观看出天气的各项指标。我们可以逐项提取数据,再按整齐的格式显示出来,方便阅读。
新知讲解
weather[‘数据项名称’]
表示weather中的某项数据,书写格式如下:
1、weather[‘desc’]是查询结果标志,如果查询城市存在,则weather[‘desc’]的值为“OK”,否则为“invilad-citykey”。
新知讲解
2、 weather[‘data’]是详细的天气数据,里面包含4项数据依次为:
(1)weather[‘data’][‘yesterday’]:昨日天气
(2) weather[‘data’][‘forecast’][0]:今日的天气; weather[‘data’][‘forecast’][1]:明日的天气,如此类推
(3) weather[‘data’][‘ganmao’]:感冒概率
(4) weather[‘data’][‘wendu’]:当前温度
新知讲解
weather[‘data’][‘forecast’][0]包含有五个子项内容,它们分别表示哪些气象指标?
‘data’:_________ ;’high’:___________ ;
‘fengli’:________ ;’low’:_________ ;
‘fengxiang’:____________
观
察
日期
高温
风力
低温
风向
新知讲解
if weather [‘desc’]==‘OK’: #判断输入的城市是否存在
today=weather[‘data’][‘forecast’][0] #将当天的天气数据存到today中
在程序weather.py基础上,删除最后一行代码‘print(weather)’,然后补充以下代码,观察输出了哪些天气数据。要输出更多天气数据,该如何修改程序?
实
践
新知讲解
print(city+’今日’+today[‘high’],today[‘low’],today[‘fengxiang’],today[‘type’])
print(‘当前温度:’+weather[‘data’][‘wendu’]+℃’) #输出当天的感冒概率
else:
print(‘没有该城市的天气数据’)
新知讲解
实践与创作
利用百度提供的查询手机号码归属地的API接口,编写程序查询手机号码的归属地,按如图2-5-3所示输出查询结果。API接口网址为:http://mobsec-dianhua.baidu,com/dianhua_api/open/location?tel=手机号码
新知讲解
检测与评估
1、用于发送网络请求的库是( )
A.random B.matplotlib
C.json D.requests
拓展新知
D
2、将JSON格式的数据a转换成Python对象的语句是( )
A、b=json.load(a) B、b=json.loads(a)
C、b=json.dump(a) D、b=json.dumps(a)
拓展新知
B
3、以下说法错误的是( )
A、requests库属于扩展库,需要先安装才能使用
B、json模块属于扩展库,需要先安装才能使用
C、表达式“4+5”的结果是“45”
D、json模块能将Python对象与JSON格式的数据进行相互转换
拓展新知
B
4、请完善下列程序,使程序能够输出所获取的页面内容
拓展新知
#getbaidu.py
__________________
resp=requests.get('http://www.baidu.com/')
resp.encoding='utf-8' #将反馈内容的编码格式转换为utf-8
_________________________
拓展新知
import requests
print(resp.encoding)
5、完成表2-5-2的学习评估,并将评估等级填写到“我的成长记录袋”中。
拓展新知
拓展新知
评估项目 掌握程度 我在本课学习中的最大收获和不足
较好 一般 较差
了解requests库的功能
理解利用get()函数发送请求后返回对象的各种属性
掌握利用requests库获取网络数据的方法
掌握利用json模块转换数据格式的方法
会表达天气数据的各项指标
初步应用requests库和json模块程序进行网络数据查询
我的学习效果达到了______等级
表2-5-2 学习评估表
课堂总结
一、requests库和json模块的运用
二、提取weather中的某项数据
weather['数据项名称']
板书设计
一、分析问题
二、学习新知
(一)requests库
(二) json库
三、设计算法
四、编写程序
(一)获取天气数据
(二)输出天气数据
谢谢
21世纪教育网(www.21cnjy.com) 中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php
中小学教育资源及组卷应用平台
广东高等教育版信息技术八年级下册第二单元第4课教学设计
课题 第5课 查询天气 单元 第二单元 学科 信息技术 年级 八年级
学习 目标 了解requests库的功能。 理解利用get()函数发送请求后返回对象的各种属性。 掌握利用requests库获取网络数据的方法。 掌握利用json模块转换数据格式的方法。 初步应用requests库和json模块程序进行网络数据查询。
重点 掌握利用requests库获取网络数据的方法。
难点 初步应用requests库和json模块程序进行网络数据查询。
教学过程
教学环节 教师活动 学生活动 设计意图
导入新课 观看图形。互联网上有大量的天气数据,如何编写从中查询所需的数据呢?交流:我们可以通过哪些渠道查询天气?查询天气时,你主要关注哪些指标?我们可以通过电视、手机、报纸、上网查询等途径查询天气;关注温度、湿度、风力、风向太阳照射强度等 观看、欣赏、思考 激发学生的学习兴趣,了解日常生活中的查询天气数据 。
讲授新课 分析问题 本课的任务是编写程序查询制定城市的天气情况。程序要解决的关键问题: 一是如何到指定的天气网站获取数据; 二是如何筛选出需要的天气数据,并按日常习惯表达出来。 要解决以上问题,在程序中需要利用以下两个库(模块) (1)利用requests库向气象网站发送请求,获取天气数据 (2)利用json模块将获取的天气数据转换成便于Python处理的数据格式 课我们利用中华万年历网站提供的天气预报API接口获取数据。例如,通过该接口获取北京的天气数据如下:http://wthrcdn.etouch.cn/weather_min?city=北京 (?http:?/??/?wthrcdn.etouch.cn?/?weather_min?city=北京?) 实践: 上网了解有哪些网站提供API数据接口: 百度百科: http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=关键字&bk_length=600 气象局: http://m.weather.com.cn/data/101010100.html 爱奇艺: http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=jsonp9 二、学习新知(一)requests库 实践:找一个你想查询的网址,然后在IDLE交互模式下进行操作,观察输出结果,理解各项属性的含义。 1.导入requests库 2.用get()函数发送请求,返回数据存放到resp中 3.再用print()函数输出表2-5-1所列的各种属性(二)json模块 由于从中华万年网获取的是字符串形式的天气数据(JSON格式),因此要用json模块将JSON格式的数据准换为Python的专属数据格式,才能更方便进行处理。 三、设计算法 根据前面分析,查询天气的算法思路如下: 1、导入requests库以及json模块 2、输入查询城市名city 3、发送网络请求,获取天气数据response 4、将response.txet转换成Python对象,并保存到weather中 5、判断天气数据是否获取成功,成功则输出天气数据。否则输出“没有该城市的天气数据” 四、编写程序 (一)获取天气数据探究: 在程序weather.py最后加上一行代码‘print(weather)’。运行程序,输入你所在的城市(如图2-5-2所示),观察输出的天气数据提供了哪些信息? 输出天气数据 分析图2-5-2可知,从网络中获取的天气数据包含了多项内容,但这些数据难于直观看出天气的各项指标。我们可以逐项提取数据,再按整齐的格式显示出来,方便阅读。观察: weather[‘data’][‘forecast’][0]包含有五个子项内容,它们分别表示哪些气象指标?实践:在程序weather.py基础上,删除最后一行代码‘print(weather)’,然后补充以下代码,观察输出了哪些天气数据。要输出更多天气数据,该如何修改程序?实践与创作: 利用百度提供的查询手机号码归属地的API接口,编写程序查询手机号码的归属地,按如图2-5-3所示输出查询结果。API接口网址为:http://mobsec-dianhua.baidu,com/dianhua_api/open/location?tel=手机号码 (?http:?/??/?mobsec-dianhua.baidu,com?/?dianhua_api?/?open?/?location?tel=手机号码?)实践与评估1、用于发送网络请求的库是( D ) A.random B.matplotlib C.json D.requests 2、将JSON格式的数据a转换成Python对象的语句是( B ) A、b=json.load(a) B、b=json.loads(a) C、b=json.dump(a) D、b=json.dumps(a) 3、以下说法错误的是( B ) A、requests库属于扩展库,需要先安装才能使用 B、json模块属于扩展库,需要先安装才能使用 C、表达式“4+5”的结果是“45” D、json模块能将Python对象与JSON格式的数据进行相互转换 4、请完善下列程序,使程序能够输出所获取的页面内容 进行探究,初步了解程序解决的关键问题。 了解requests库、json模块 了解API数据接口 了解requests库的用法。 操作、实践 了解json模块的用法。 教师讲解,学生听讲,设计查询天气的算法。 输出天气数据的格式用法。 自主探究,学生理解和掌握。 上网搜索 听讲、了解。 学生听老师讲解,了解json模块。
课堂小结 一、requests库和json模块的运用 二、提取weather中的某项数据 学生回答 利用问题形式进行总结
板书 一、分析问题 二、学习新知 (一)requests库 (二) json库 三、设计算法 四、编写程序 (一)获取天气数据 (二)输出天气数据
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
HYPERLINK "http://www.21cnjy.com/" 21世纪教育网(www.21cnjy.com)