(
课件网) 第 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、输入查 ... ...