如何将爬虫获得的数据变为字典的key_3联网获得网络天气

3联网获得网络天气

使用常用类型和字典进行爬虫案例开发,通过现有的天气数据地址进行数据采集,当然一般接口api地址是爬虫分析出来的,也可以通过购买注册申请获得,本次使用的地址是来源于后者。

作业描述

1. 通过天气api地址,获取某个城市的天气数据

2. 打印温度temp,天气情况description,天气气压pressure

3. 示例:

温度xx,天气情况yy,天气气压zz

编码准备

爬虫使用第三方网络请求库,库的名称为requests,底层是基于urllib库。requests在anaconda3中已经集成过了,所以无需下载安装。很有意思的是在python中有很多不同的库可以完成不同的功能需求,大到大数据人工智能生态圈,小到爬虫领域,这些库可以支持开发者快速开发的需求。一般情况下爬虫本身就是一个数据的ETL(抽取extract、转换transform、加载load)过程,可以简单的拆分为:数据下载、数据提取、数据处理、数据存储等过程。其中每个过程都有不同的库来支持

爬虫过程拆解

下面列出了爬虫和数据清洗过程可能会用到的库,在后面的课程中我们会讲解到,目前大家了解整个流程即可。其实爬虫最难的有2个方面:一个是反爬虫,一个是海量数据处理。一般小规模的爬虫是很简单的。

1. 数据下载

· requests/urllib/wget/grequests/...

2. 数据提取

· re/lxml/json/...

3. 数据处理

· pandas/numpy/mapreduce/spark...

4. 数据存储

· csv/openpyxl/mysql/mongdb...

技术点-网络请求库requests

字典知识点复习-字典数据提取

weatherDict = {"coord":{"lon":120.13,"lat":33.39},"weather":[{"id":801,"main":"Clouds","description":"晴,少云","icon":"02d"}],"base":"stations","main":{"temp":17.78,"feels_like":14.23,"temp_min":17.78,"temp_max":17.78,"pressure":1026,"humidity":29,"sea_level":1026,"grnd_level":1025},"visibility":10000,"wind":{"speed":2.13,"deg":343},"clouds":{"all":14},"dt":1604904444,"sys":{"country":"CN","sunrise":1604874318,"sunset":1604912484},"timezone":28800,"id":1787746,"name":"Yancheng","cod":200}## 打印天气描述信息print(weatherDict['weather'][0]['description'])

数据下载

我们会发现weatherDict就是我们要下载的天气数据就是上面的字典类型的数据,解析的天气数据的话也就没什么难度了。

下面我们看下如何下载weatherDict数据,其实也就是一行代码,先导入requests库然后调用get方法获取网络数据,其实requests.get返回的是一个Respose对象,Response对象里面包含了很多信息,如果网络数据是dict类型的可以直接用json()方法即可获得。注意:在我们python中的dict类型和javascript的json类型是类似的数据格式,只是名称不一样,javascript语言中叫json对象类型。

最后非常重要的一句话是,大家写数据下载代码之前,先要确定你的电脑可以正常上网,然后在浏览器中可以正常打开天气预报的api地址,如果一切正常的话,再进行代码的编写

277f0c87ef966d6b22d741a4b387aa41.png
## 导入网络请求库import requests# 天气预报api地址url='http://api.openweathermap.org/data/2.5/weather?q=yancheng&mode=json&units=metric&lang=zh_cn&APPID=6a67ed641c0fda8b69715c43518b6996'weatherDict = requests.get(url).json()

打印以下代码,你会发现返回的类型是 requests.models.Response,Response最常用方法和属性有

1. 将网络数据转换成字典类型:response.json()

1. 直接获得网络字符串文件:response.text

1. 如果网络文件是图片/视频等二进制文件:response.content

print(type(requests.get(url)))response = requests.get(url) #Response对象print(response.json())print(response.text)print(response.content)

运行结果中response.content返回的内容带字母b

e6ff1bd03fade0dab3ecaeaccdeb1f20.png

最终代码

## 导入网络请求库import requests# 天气预报api地址url='http://api.openweathermap.org/data/2.5/weather?q=yancheng&mode=json&units=metric&lang=zh_cn&APPID=6a67ed641c0fda8b69715c43518b6996'weatherDict = requests.get(url).json()## 打印天气描述信息print(weatherDict['weather'][0]['description'])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值