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

本文介绍如何利用和风天气API,通过Python编程获取指定城市的实时天气信息,包括温度、体感温度及能见度等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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

前言

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

一、API是什么?

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

二、步骤

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

效果图

1.注册和风天气账号

网址:和风天气控制台
注册完毕后登录在应用管理里新建一个Web API类型的应用。创建完后记得复制KEY的值,这很重要!!!
应用
然后呢,我们就可以开始根据和风天气提供的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开发文档进行获取。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值