为了账号安全,请及时绑定邮箱和手机立即绑定

从 Polygon api 转储 json 响应的有效方法是什么?

从 Polygon api 转储 json 响应的有效方法是什么?

沧海一幻觉 2023-07-18 10:24:03
我正在从Polygon api 下载数据,在检查文档后,我意识到响应大小存在某种速率限制,每个请求将包含 5000 条记录。假设我需要下载几个月的数据,看起来没有一个单行解决方案可以一次性获取指定时间段内的所有数据。以下是我使用的 4 天数据点的响应requests.get('query').json():{   "ticker":"AAPL",   "status":"OK",   "queryCount":4,   "resultsCount":4,   "adjusted":True,   "results":[      {         "v":152050116.0,         "vw":132.8458,         "o":132.76,         "c":134.18,         "h":134.8,         "l":130.53,         "t":1598932800000,         "n":1      },      {         "v":200117202.0,         "vw":131.6134,         "o":137.59,         "c":131.4,         "h":137.98,         "l":127,         "t":1599019200000,         "n":1      },      {         "v":257589206.0,         "vw":123.526,         "o":126.91,         "c":120.88,         "h":128.84,         "l":120.5,         "t":1599105600000,         "n":1      },      {         "v":336546289.0,         "vw":117.9427,         "o":120.07,         "c":120.96,         "h":123.7,         "l":110.89,         "t":1599192000000,         "n":1      }   ],   "request_id":"bf5f3d5baa930697621b97269f9ccaeb"}我认为最快的方法是按原样编写内容并稍后处理with open(out_file, 'a') as out:    out.write(f'{response.json()["results"][0]}\n')稍后,在我下载所需的内容后,将读取该文件并使用 pandas 将数据转换为 json 文件:pd.DataFrame([eval(item) for item in open('out_file.txt')]).to_json('out_file.json')有没有更好的方法来实现同样的目标?如果有人熟悉 scrapy feed 导出,有没有一种方法可以在运行期间将数据转储到 json 文件而不将任何内容保存到内存中,我认为这与 scrapy 操作的方式相同。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

不要将内容写为文本,而是直接将其写为 JSON,而不是使用唯一的文件名(例如您的request_id)。


import json


# code for fetching data omitted.

data = response.json()


with open(out_file, 'w') as f:

    json.dump(data, f)

然后你可以将它们全部加载到 Dataframes 中,

from pathlib import Path # Python 3.5+


import pandas as pd


dfs = []


for path in Path('dumped').rglob('*.json'):

    tmp = pd.read_json(path)

    dfs.append(tmp)


df = pd.concat(dfs, ignore_index=True)


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号