简单的API爬虫(和风天气数据获取)
皮猪 294 2

目录

  • 前言
  • 一、API是什么?
  • 二、步骤
  • 总结

前言

不知不觉,我已经是快大三了,接触过C,C++,Python。但感觉什么都会一点点,但细想又什么都不会,最后下定决心开始走上精通Python的路。从爬虫到数据分析,最后到机器学习。希望每一天都有收获。今天呢,我就开始系统的学习爬虫。

一、API是什么?

简单来说,就是一个接口,你可以通过携带一些参数来访问这个接口获得你想要的数据。 我们这次就是用和风天气提供的API获取我们需要的天气数据。

二、步骤

我们这次就写一个能根据我们输入的城市名称获取相关天气数据的程序。

简单的API爬虫(和风天气数据获取)

1.注册和风天气账号

网址:和风天气控制台 注册完毕后登录在应用管理里新建一个Web API类型的应用。创建完后记得复制KEY的值,这很重要!!! 简单的API爬虫(和风天气数据获取) 然后呢,我们就可以开始根据和风天气提供的API开发文档写代码了。 API开发文档

2.获取location

首先通过查询API开发文档我们发现我们需要请求 https://devapi.qweather.com/v7/weather/now?[请求参数] 这个网址。必须要携带的参数有两个,一个是上面我提到过的KEY值,另一个就是代表城市的location。location可以是LocationID或以英文逗号分隔的经度,纬度坐标(十进制)。 和风天气提供了存储LocationID的文档也有相应的请求网址。LocationID文档下载网址 请求网址则是https://geoapi.qweather.com/v2/city/lookup?[请求参数],必须要携带的参数有两个,一个是KEY,另一个是location(需要查询地区的名称,支持文字、以英文逗号分隔的经度,纬度坐标(十进制)、LocationID或Adcode(仅限中国城市)。)。 我们首先请求第二个网址获取LocationID。

代码如下:

#coding:utf-8
import requests
import json

def getID(address,key):
    # address='北京'
    url = f'https://geoapi.qweather.com/v2/city/lookup?location={address}&key={key}'
    datas = requests.get(url).json()
    # print(data)
    # print(type(datas))
    for data in datas['location']:
       if data['name'] == address:
           ID = data['id']
    return ID

获取到的数据是字符串类型,我们通过转换为json格式提取我们需要的location。

3.获取天气数据

代码如下:

def getData(address,ID,key):
    url = f'https://devapi.qweather.com/v7/weather/now?location={ID}&key={key}'
    datas = requests.get(url).json()
    data_updateTime = datas['updateTime']
    data_time = datas['now']['obsTime']
    data_temp = datas['now']['temp']
    data_feelsLike = datas['now']['feelsLike']
    data_text = datas['now']['text']
    data_vis = datas['now']['vis']
    print('{0} {5}\n更新时间:{1}\n观测时间:{2}\n温度:{3} 摄氏度\n体感温度:{4} 摄氏度\n能见度:{6} 公里\n'.format(address,data_updateTime,data_time,data_temp,data_feelsLike,data_text,data_vis))

这段代码也没什么难度,稍微注意下的就是获取到的数据的格式。

4.完整代码

#coding:utf-8
import requests
import json

def getID(address,key):
    # address = '北京'
    url = f'https://geoapi.qweather.com/v2/city/lookup?location={address}&key={key}'
    datas = requests.get(url).json()
    # print(data)
    # print(type(datas))
    for data in datas['location']:
       if data['name'] == address:
           ID = data['id']
    return ID

def getData(address,ID,key):
    url = f'https://devapi.qweather.com/v7/weather/now?location={ID}&key={key}'
    datas = requests.get(url).json()
    data_updateTime = datas['updateTime']
    data_time = datas['now']['obsTime']
    data_temp = datas['now']['temp']
    data_feelsLike = datas['now']['feelsLike']
    data_text = datas['now']['text']
    data_vis = datas['now']['vis']
    print('{0} {5}\n更新时间:{1}\n观测时间:{2}\n温度:{3} 摄氏度\n体感温度:{4} 摄氏度\n能见度:{6} 公里\n'.format(address,data_updateTime,data_time,data_temp,data_feelsLike,data_text,data_vis))

if __name__ == '__main__':
    key = '******' //填入你自己的KEY值
    address = input('请输入要查询的天气:')
    ID = getID(address,key)
    getData(address, ID, key)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了API的使用,通过API开发文档我们可以很方便的获取我们需要的数据。 如果需要和风天气的其他数据可以自己去查阅API开发文档进行获取。

评论区

索引目录