【发布时间】:2019-08-22 11:37:46
【问题描述】:
我正在尝试创建一个从 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)
它显示 0ne 天的数据。 但我需要从 Api 收集 5 年的数据,所以我使用
channels = ['maxtempC','maxtempF', 'mintempC','mintempF']
channels_list = []
for channel in channels:
JSONContent = requests.get("http://api.worldweatheronline.com/premium/v1/past-weather.ashx" + channel).json()
channels_list.append([JSONContent['Type'], JSONContent['Temp'], JSONContent['mintem'],JSONContent['views']])
dataset = pd.DataFrame(channels_list)
dataset.sample(5)
它给了
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我如何从 Api 收集 5 年的数据?
【问题讨论】:
-
您的问题似乎包括您的 API 密钥。我已对其进行了编辑,但它将保留在历史记录中;如果你删除你的问题,它可以被删除。
-
在您的第二个 sn-p 中,您将值附加到我确定无效的 URL。相反,如果是 GET 请求,您应该将数据放在查询字符串 (
params=) 中;如果是 POST 请求,则将数据放在正文 (data=) 中。 -
温度、湿度和风速
-
当我使用 Get 请求时,它会提供一天的数据,我需要 5 年
-
如果
tp参数表示时间段,也许你可以增加它来请求更多数据。