使用API和Python创建数据集

2024-06-03 00:47:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个从API检索到的5年气象数据集

city=input("enter\n")
ask=input("enter date\n")
date_format = "%Y-%m-%d"
date_time = datetime.strptime(ask, date_format)

print(date_time)
json_data = requests.get(
    'http://api.worldweatheronline.com/premium/v1/past-weather.ashx',
    params=dict(
        key='my key',
        q=city,
        format='json',
        date=ask,
        tp='24'
    )
).json()
print(json_data)

它显示一天的数据。 但我需要从Api收集5年的数据,这样我就可以使用了

^{pr2}$

它给予

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

如何从Api收集5年数据?在


Tags: 数据keyapijsonformatcityinputdata
1条回答
网友
1楼 · 发布于 2024-06-03 00:47:10

在不了解API内部结构的情况下,我可以建议在5年内每天执行一次调用,并将每日数据附加到一个列表中:

import datetime
import requests

定义一个函数,该函数将为给定的开始日期和结束日期之间的所有天数返回生成器(不是列表),该生成器必须作为日期时间对象输入:

^{pr2}$

示例值:

city="London"
start_date="2019-03-01"
end_date="2019-03-11"
date_format = "%Y-%m-%d"

start_date = datetime.datetime.strptime(start_date, date_format)
end_date = datetime.datetime.strptime(end_date, date_format)

从开始日期到结束日期收集每日数据,每天一个请求:

all_data = []
maxtempC_list = []
maxtempF_list = []
mintempC_list = []
mintempF_list = []


for each_date in daterange(start_date, end_date):
    print(each_date.date())

    ask = str(each_date.date())


    json_data = requests.get(
        'http://api.worldweatheronline.com/premium/v1/past-weather.ashx',
        params=dict(
            key='YOUR_API_KEY',
            q=city,
            format='json',
            date=ask,
            tp='24'
        )
    ).json()
    print(json_data)

    all_data.append(json_data)
    maxtempC_list.append(json_data['data']['weather'][0]['maxtempC'])
    maxtempF_list.append(json_data['data']['weather'][0]['maxtempF'])
    mintempC_list.append(json_data['data']['weather'][0]['mintempC'])
    mintempF_list.append(json_data['data']['weather'][0]['mintempF'])

相关问题 更多 >