【发布时间】:2021-10-07 20:24:56
【问题描述】:
我已经成功编写了调用 API 并将结果转换为 DataFrame 的代码。
wax_wallet = "zqsfm.wam"
# Get Assets from AtomicHub API
response1 = requests.get(
"https://wax.api.atomicassets.io/atomicassets/v1/assets?"
f"owner={wax_wallet}"
"&collection_whitelist=nftdraft2121"
"&page=1"
"&limit=1000"
"&order=asc"
"&sort=name")
# Save Response as JSON
json_assets = response1.json()
# Convert JSON to DataFrame
df = pd.json_normalize(json_assets['data'])
此 API 每页最多返回 1000 个项目,因此我需要让它循环遍历所需的多个页面,并最终将结果存储到 DataFrame 中。
我试图用下面的代码解决它,但没有成功。
asset_count = 2500
pages = int(math.ceil(asset_count / 1000))
# Get Assets from AtomicHub API
all_assets = []
for page in range(1, pages):
url = f'https://wax.api.atomicassets.io/atomicassets/v1/assets?owner={wax_wallet}' \
f'&collection_whitelist=nftdraft2121&page={page}&limit=1000&order=asc&sort=name'
response = rq.get(url)
all_assets.append(json.loads(response.text))["response"]
提前感谢您的帮助!
【问题讨论】:
-
最好使用
params参数而不是手动形成查询字符串:requests.get("https://wax.api.atomicassets.io/atomicassets/v1/assets", params={"owner": wax_wallet, "collection_whitelist": "nftdraft2121", "page": "1", "limit": "1000", "order": "asc", "sort": "name")。你也可以使用response.json()。
标签: python json dataframe python-requests append