亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 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 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號