python实现调用易客云 历史天气 API

目前天气api有不少,能提供历史天气的api不多,易客云是其中之一,历史天气提供了气压、降雨量、湿度等其他历史天气api里少有的数据。

以下以python语言为例,调取易客云历史天气api。

请求方式及url:

  • 请求方式:GET

  • 接口地址:(请将线路地址设置在服务端, 为动态可修改的, 请勿在C端直连接口, 防止遇到网络问题导致程序异常。)

  • 线路1(推荐):http://v0.yiketianqi.com/api
  • 线路2:http://v1.yiketianqi.com/api

请求示例 (该请求账号为测试账号, 不定期失效, 请使用自己的账号appid和appsecret)

http://v1.yiketianqi.com/free/history?appid=&appsecret=&cityid=101120101&year=2023&month=1&date=

import requests
import json
import pandas as pd
import time

# 中国 293 个地级城市列表
cities = [
    "北京", "上海", "天津", "重庆", 
    "石家庄", "太原", "呼和浩特", "沈阳", "长春", "哈尔滨", 
    "南京", "杭州", "合肥", "福州", "南昌", "济南", "郑州", 
    "武汉", "长沙", "广州", "南宁", "海口", "成都", "贵阳", 
    "昆明", "拉萨", "西安", "兰州", "西宁", "银川", "乌鲁木齐", 
    "大连", "青岛", "宁波", "厦门", "深圳",
    # 此处省略其余城市名称
]

# 月份列表
months = [5, 6]
years = [2023, 2024]

data_list = []

for year in years:
    for month in months:
        for city in cities:
            url = f"http://v1.yiketianqi.com/api?version=history&appid=&appsecret=&city={city}&year={year}&month={month}"
            response = requests.get(url)
            if response.status_code == 200:
                data = response.json()
                if 'data' in data and 'days' in data['data']:
                    for day_data in data['data']['days']:
                        date = day_data['date']
                        tem_day = day_data['tem_day']
                        tem_night = day_data['tem_night']
                        precipPct = day_data['precipPct']
                        data_list.append([date, city, tem_day, tem_night, precipPct])
            else:
                print(f"获取 {city} {year} 年 {month} 月天气数据失败,状态码:{response.status_code}")
            time.sleep(1)  # 为了避免频繁请求,添加一秒的延迟

# 将数据转换为 DataFrame
df = pd.DataFrame(data_list, columns=['日期', '地级城市', '最高温', '最低温', '降雨量'])

# 保存为 Excel
df.to_excel('weather_data.xlsx', index=False)

将请求获取的数据填入excel表格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值