【发布时间】:2020-04-28 14:30:44
【问题描述】:
我有一个 API,我正在调用它限制每个请求 50 个结果以及每分钟 180 个请求。但是,一个对象总共可能有 10 到 50,000 个结果。我需要以可用的格式构建生成的 JSON,或者将其转换为我可以更轻松地访问的东西,比如 pandas,我只是不确定哪个是更好的选择。计划是遍历我需要数据的每个对象 ID。我当前的 API 调用如下所示:
import requests, time
import json, pandas as pd
#object id's to iterate through
# object_id = ['13','16','95','93','77']
object_id = ['13']
#this block finds the count of entries
for obj in object_id:
data = []
info_url = 'https://api.ontraport.com/1/objects/getInfo?objectID={}'.format(obj)
headers = {
'Api-Appid': 'XXXXXXXXX',
'Api-Key': 'XXXXXXXXX'
}
response = requests.get(info_url, headers=headers).json()
obj_count = int(response['data']['count'])
#this block ensures all entries are pulled as it iterates in groups of 50
start = 1
while start / obj_count <= 1:
url = 'https://api.ontraport.com/1/objects?objectID={}&start={}'.format(obj, start)
headers = {
'Api-Appid': 'XXXXXXXXX',
'Api-Key': 'XXXXXXXXX'
}
response = requests.get(url, headers=headers).json()
data.append(response)
start += 50
time.sleep(0.34)
with open('C:/Desktop/data{}.txt'.format(obj), 'w') as outfile:
json.dump(data, outfile)
API 产生以下结果:
{
"code": 0,
"data": [{
"id":"111",
"date":"1441326063"
},
{
"id":"132",
"date":"1441526112"
}],
"account_id": 0
}
我只关心“数据”标签内的部分。但是,当我将结果附加在一起时,它会成为每个拉取的 JSON 对象的大型 JSON 数组,并且在每个对象中,“数据”是另一个数组。是否可以将其结构化为仅附加数据结果,然后格式化为 pandas 数据框?
【问题讨论】: