我想將整個 Azure Prices REST API 保存到 CSV。
為此,我必須查詢以以下結尾的端點
我寫了一個 Python 腳本,可以幫助我獲取它NextPageLink并將其回圈到一個函式中:
import requests
import json
import pandas as pd
from timeit import default_timer as timer
from datetime import timedelta
start = timer()
NextPageLink = "https://prices.azure.com/api/retail/prices"
def GetJSON(NextPageLink):
wjdata = requests.get(NextPageLink).json()
df = pd.DataFrame(wjdata)
df.to_csv("test.csv", index=False)
if 'NextPageLink' in wjdata:
print (timer(), wjdata['NextPageLink'])
NextPageLink = wjdata['NextPageLink']
return NextPageLink
GetJSON(NextPageLink)
該腳本非常簡單,但它只保存第一頁而不查詢NextPageLink.
我究竟做錯了什么?
uj5u.com熱心網友回復:
要從 API 獲取所有資料,您可以嘗試(總共有 4558 個請求):
import requests
import pandas as pd
url = "https://prices.azure.com/api/retail/prices"
all_data = []
while True:
print(url)
data = requests.get(url).json()
all_data.extend(data["Items"])
if data["NextPageLink"]:
url = data["NextPageLink"]
else:
break
df = pd.DataFrame(all_data)
print(df.head().to_markdown(index=False))
df.to_csv("data.csv", index=False)
印刷:
......
https://prices.azure.com:443/api/retail/prices?$skip=455600
https://prices.azure.com:443/api/retail/prices?$skip=455700
https://prices.azure.com:443/api/retail/prices?$skip=455800
| 貨幣代碼 | 層最小單位 | 零售價 | 單價 | 手臂區域名稱 | 地點 | 有效開始日期 | meterId | 儀表名稱 | 產品編號 | skuId | 可用性Id | 產品名稱 | sku名稱 | 服務名稱 | 服務編號 | 服務族 | 測量單位 | 型別 | isPrimaryMeterRegion | armSku名稱 | 保留期限 | 有效結束日期 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 美元 | 0 | 3個 | 3個 | 南印度 | 在南方 | 2016-12-01T00:00:00Z | ff92c14c-af83-412e-9144-a2542dfe0b4f | 證書更新請求 | DZH318Z0BQG0 | DZH318Z0BQG0/0001 | 密鑰庫 | 優質的 | 密鑰庫 | DZH3157JCZ2M | 安全 | 1個 | 消耗 | 錯誤的 | 楠 | 楠 | ||
| 美元 | 0 | 3個 | 3個 | 中南部 | 美國中南部 | 2016-12-01T00:00:00Z | ff92c14c-af83-412e-9144-a2542dfe0b4f | 證書更新請求 | DZH318Z0BQG0 | DZH318Z0BQG0/002Q | 密鑰庫 | 標準 | 密鑰庫 | DZH3157JCZ2M | 安全 | 1個 | 消耗 | 錯誤的 | 楠 | 楠 | ||
| 美元 | 0 | 3個 | 3個 | 加入印度西部 | 在西焦 | 2021-04-15T00:00:00Z | ff92c14c-af83-412e-9144-a2542dfe0b4f | 證書更新請求 | DZH318Z0BQG0 | DZH318Z0BQG0/004V | 密鑰庫 | 優質的 | 密鑰庫 | DZH3157JCZ2M | 安全 | 1個 | 消耗 | 錯誤的 | 楠 | 楠 | ||
| 美元 | 0 | 3個 | 3個 | 德國中西部 | 德西中環 | 2016-12-01T00:00:00Z | ff92c14c-af83-412e-9144-a2542dfe0b4f | 證書更新請求 | DZH318Z0BQG0 | DZH318Z0BQG0/003Q | 密鑰庫 | 優質的 | 密鑰庫 | DZH3157JCZ2M | 安全 | 1個 | 消耗 | 錯誤的 | 楠 | 楠 | ||
| 美元 | 0 | 3個 | 3個 | 西歐 | 歐盟西部 | 2016-12-01T00:00:00Z | ff92c14c-af83-412e-9144-a2542dfe0b4f | 證書更新請求 | DZH318Z0BQG0 | DZH318Z0BQG0/001Z | 密鑰庫 | 優質的 | 密鑰庫 | DZH3157JCZ2M | 安全 | 1個 | 消耗 | 錯誤的 | 楠 | 楠 |
并保存data.csv(來自 LibreOffice 的螢屏截圖):

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533809.html
