高德关于获取天气接口

本文介绍了如何利用高德地图的免费天气接口进行天气信息获取,包括申请API Key、拼接请求URL和解析返回的JSON数据。建议将天气现象转换为人类可读的数组,并考虑缓存策略以提高效率。

最近在做天气这块,在网上一搜有各种天气接口,但是大多数都是收费的。偶然发现,高德也提供天气接口,一天可以免费调用100000次,就试了一下,还是蛮好用的,就拿出来分享一波。

高德API接口地址 https://lbs.amap.com/api/webservice/guide/api/weatherinfo/

第一步,申请”web服务 API”密钥(Key);

第二步,拼接HTTP请求URL,第一步申请的Key需作为必填参数一同发送;

第三步,接收HTTP请求返回的数据(JSON或XML格式),解析数据。

如无特殊声明,接口的输入参数和输出数据编码全部统一为UTF-8。

天气API的服务地址:https://restapi.amap.com/v3/weather/weatherInfo?parameters

因为高德地图接口里面返回的数据:天气现象,是数字表示的,所以我们需要首先定义一个天气现象的数组,并且天气数据在短时间内不会太大的变化,可以做个缓存,利用框架自带的缓存、写到文件里,或者写到redis等其他缓存中都是可以的。

    public function getWeather()
    {

        // 定义天气状态数组
        $weatherArray = ['晴', '多云', '阴', '阵雨', '雷阵雨', '雷阵雨并伴有冰雹', '雨夹雪', '小雨', '中雨', '大雨', '暴雨', '大暴雨', '特大暴雨', '阵雪', '小雪', '中雪', '大雪', '暴雪', '雾', '冻雨', '沙尘暴', '小雨-中雨', '中雨-大雨', '大
获取高德天气 API 接口用于爬虫,主要涉及两个关键步骤:**获取城市列表及其对应的 `adcode` 编码** 和 **通过 `adcode` 调用高德天气接口获取天气信息**。以下是详细的实现方法和代码示例: ### 获取城市列表及 `adcode` 高德地图提供了城市列表接口,可以通过访问特定的 URL 获取城市信息,其中包含城市名称和对应的 `adcode`。这个 `adcode` 是调用天气接口时必需的参数。 ```python import requests # 获取城市列表的URL city_list_url = 'https://www.amap.com/service/cityList?version=201922117' # 发起请求获取城市列表 response_city = requests.get(city_list_url) json_data = response_city.json() # 提取城市信息 city_list = [] for key, value in json_data['data']['cityByLetter'].items(): for city in value: city_list.append(city) ``` ### 通过 `adcode` 获取天气信息 使用从城市列表中获取的 `adcode`,可以访问高德地图的天气接口获取对应城市的天气数据。 ```python # 遍历城市列表并获取天气信息 for index, city in enumerate(city_list): adcode = city['adcode'] city_name = city['name'] # 构建天气接口URL weather_url = f'https://www.amap.com/service/weather?adcode={adcode}' # 发起请求获取天气信息 response_weather = requests.get(weather_url) weather_data = response_weather.json() # 提取天气信息 weather = weather_data.get('data').get('data')[0].get('live').get('weather_name') temperature = weather_data.get('data').get('data')[0].get('live').get('temperature') # 输出结果 print(f'{index + 1}. 城市: {city_name}, 天气: {weather}, 温度: {temperature}°C') ``` ### 注意事项 - **请求频率限制**:高德地图的 API 可能会对请求频率进行限制,因此在实际使用中需要合理控制请求间隔,避免被封禁。 - **反爬虫机制**:高德地图可能会对频繁的请求进行反爬虫处理,建议在请求中添加适当的 headers,例如 `User-Agent` 和 `Referer`,以模拟浏览器行为。 - **API 版本更新**:高德地图的 API 可能会不定期更新,因此需要关注接口的变化,及时调整代码。 ### 示例输出 ``` 1. 城市: 北京, 天气: 晴, 温度: 25°C 2. 城市: 上海, 天气: 多云, 温度: 28°C 3. 城市: 广州, 天气: 雷阵雨, 温度: 30°C ... ``` 通过以上步骤,可以成功获取高德天气 API 接口的数据,并实现爬虫功能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值