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

我正在从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 操作的方式相同。


沧海一幻觉
浏览 122回答 1
1回答

料青山看我应如是

不要将内容写为文本,而是直接将其写为 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 pddfs = []for path in Path('dumped').rglob('*.json'):    tmp = pd.read_json(path)    dfs.append(tmp)df = pd.concat(dfs, ignore_index=True)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python