如何合并API获取的AAPL两类机构持仓数据至单个JSON文件
合并抓取AAPL两类机构持仓数据并输出至单个JSON文件
修改思路
原纳斯达克API单次请求即可返回包含Active Positions和New and Sold Out Positions的完整数据,无需重复发起请求。只需一次请求后分别解析两类数据,再将其整合到同一个JSON结构中即可。
修改后的完整代码
import requests import pandas as pd import json # 请求配置 url = 'https://api.nasdaq.com/api/company/AAPL/institutional-holdings?limit=15&type=TOTAL&sortColumn=marketValue&sortOrder=DESC' headers = { 'accept': 'application/json, text/plain, */*', 'origin': 'https://www.nasdaq.com', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36' } # 发起单次请求 response = requests.get(url, headers=headers) data = response.json()['data'] # 解析两类数据 active_df = pd.json_normalize(data['activePositions']['rows']) new_sold_df = pd.json_normalize(data['newSoldOutPositions']['rows']) # 转换为字典并整合 combined_data = { "active_positions": active_df.to_dict(orient='columns'), "new_and_sold_out_positions": new_sold_df.to_dict(orient='columns') } # 写入JSON文件 with open('AAPL_institutional_combined_positions.json', 'w') as f: json.dump(combined_data, f, indent=4)
输出JSON示例
生成的文件会包含两类数据的结构化内容,格式如下:
{ "active_positions": { "positions": { "0": "Increased Positions", "1": "Decreased Positions", "2": "Held Positions", "3": "Total Institutional Shares" }, "holders": { "0": "1,780", "1": "2,339", "2": "283", "3": "4,402" }, "shares": { "0": "239,170,203", "1": "209,017,331", "2": "8,965,339,255", "3": "9,413,526,789" } }, "new_and_sold_out_positions": { "positions": { "0": "New Positions", "1": "Sold Out Positions" }, "holders": { "0": "99", "1": "90" }, "shares": { "0": "37,374,118", "1": "4,637,465" } } }
关键说明
- 仅发起一次HTTP请求,避免重复请求浪费资源
- 用顶层键
active_positions和new_and_sold_out_positions明确区分两类数据,结构清晰易读 - 使用
json.dump并设置indent=4保证输出JSON格式化,便于查看
内容的提问来源于stack exchange,提问作者kiestuthridge23
相关产品推荐
相关产品推荐

