簡體   English   中英

從api調用將多組數據合並為一個JSON文件

[英]Combining multiple sets of data to one JSON file from api calls

我需要這個網站的兩組數據:

https://www.nasdaq.com/market-activity/stocks/aapl/institutional-holdings

其中包括“活躍頭寸”和“新頭寸和已售出頭寸”表格。 我的代碼只能將一條數據提供給 JSON:

import requests
import pandas as pd

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'
}

r = requests.get(url, headers=headers)
df = pd.json_normalize(r.json()['data']['newSoldOutPositions']['rows'])

df.to_json('AAPL_institutional_positions.json')

這將給出以下 (JSON) 的 output:

{
    "positions":{
        "0":"New Positions",
        "1":"Sold Out Positions"
    },
    "holders":{
        "0":"99",
        "1":"90"
    },
    "shares":{
        "0":"37,374,118",
        "1":"4,637,465"
    }
}

然而,對於我正在抓取的另一張表,我使用了這段代碼(我所做的只是將“newSoldOutPositions”更改為“activePositions”):

import requests
import pandas as pd

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'
}

r = requests.get(url, headers=headers)
df = pd.json_normalize(r.json()['data']['activePositions']['rows'])

df.to_json('AAPL_institutional_positions.json')

這給出了這個 output (JSON):

{
    "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"
    }
}

所以我的問題是,我如何結合抓取來抓取兩組數據和 output 它們都在一個 JSON 文件中?

謝謝

如果你只想要json數據,就沒有必要使用pandas:

import requests

nasdaq_dict = {}

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'
}

r = requests.get(url, headers=headers)

nasdaq_dict['activePositions'] = r.json()['data']['activePositions']['rows']
nasdaq_dict['newSoldOutPositions'] = r.json()['data']['newSoldOutPositions']['rows']
print(nasdaq_dict)

終端結果:

{'activePositions': [{'positions': 'Increased Positions', 'holders': '1,795', 'shares': '200,069,709'}, {'positions': 'Decreased Positions', 'holders': '2,314', 'shares': '228,105,026'}, {'positions': 'Held Positions', 'holders': '308', 'shares': '8,976,744,094'}, {'positions': 'Total Institutional Shares', 'holders': '4,417', 'shares': '9,404,918,829'}], 'newSoldOutPositions': [{'positions': 'New Positions', 'holders': '121', 'shares': '55,857,143'}, {'positions': 'Sold Out Positions', 'holders': '73', 'shares': '8,851,038'}]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM