使用Python导入超过10000行的api url数据



我尝试导入一个json url(api(,文件有"nhits":20843

这是我的网址:https://opendata.reseaux-energies.fr/api/records/1.0/search/?dataset=injections-区域配额合并rpt&q=&行=20843&facet=日期&facet=区域&facet=filiere&facet=plage_de_puissance

这是我的代码:

import requests
site = "https://opendata.reseaux-energies.fr/api/records/1.0/search/?dataset=injections-regionales-quotidiennes-consolidees-rpt&q=&rows=20843&facet=date&facet=region&facet=filiere&facet=plage_de_puissance"
r = requests.get(site)
data = r.json()

我有一条错误消息:

'raw_params': {'expected': '-1 <= rows <= 10000', 'field_value': 20843, 'field_name': 'rows'}, 'raw_message': 'Invalid field in API request: {field_name} with value {field_value}. Expected: {expected}', 'error_key': 'InvalidFieldInAPIRequestExpectedException'}

如何避免错误

ps:很抱歉我的英语不好

您正在同时请求多个resuklt。错误表明您一次只能请求10公里的重复结果。因此,如果你想得到每一个结果,你需要把你的请求分成多个部分。

对于我的代码,我将每个请求的结果减少到1000,这样请求就不会超时。然后,对于每个后续的请求,我通过在url中添加start=" + str(i) + "&来增加您api的开始参数。请参阅文档https://help.opendatasoft.com/apis/ods-search-v1/#available-api

import requests
import math
datas = []
for i in range(math.ceil(20843/1000)):
site = "https://opendata.reseaux-energies.fr/api/records/1.0/search/?dataset=injections-regionales-quotidiennes-consolidees-rpt&q=&rows=1000&start="+str(i*1000)+"&facet=date&facet=region&facet=filiere&facet=plage_de_puissance"
r = requests.get(site)
datas.append(r.json())

最新更新