You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API返回JSON转Pandas DataFrame:提取result字段存为CSV遇阻

解决Etherscan API返回结果转CSV的问题

我来帮你搞定这个提取result字段并转CSV的问题!咱们先排查可能的坑点,再一步步修正代码:

常见问题&解决方案

1. 先修正URL里的转义字符

你代码里的URL用了&,这是HTML转义字符,实际请求时要换成&,不然Etherscan API可能解析错误,返回非预期结果。

2. 完善响应处理流程

你的代码只完成了请求步骤,缺少JSON解析、请求状态检查和字段有效性验证,这很容易导致提取失败。下面是完整的可运行代码:

import requests
import pandas as pd
import json

# 替换成你的完整API地址,记得加上API Key(Etherscan要求必填,否则会限流或报错)
api_url = "http://api.etherscan.io/api?module=account&action=txlist&address=0xddb...&apikey=你的API密钥"

# 发送请求并处理响应
response = requests.get(api_url)

# 先检查请求是否成功
if response.status_code == 200:
    # 解析JSON格式的返回数据
    api_data = response.json()
    
    # 检查是否存在result字段
    if "result" in api_data:
        result_content = api_data["result"]
        
        # 确认result是交易列表(正常返回是列表,错误时可能是字符串)
        if isinstance(result_content, list):
            # 把列表转成DataFrame
            tx_df = pd.DataFrame(result_content)
            # 保存为CSV,index=False去掉默认索引列
            tx_df.to_csv("etherscan_transactions.csv", index=False)
            print("交易数据已成功保存为CSV文件!")
        else:
            print(f"API返回的result不是交易列表,而是:{result_content},可能是请求错误(比如API Key无效、地址格式不对)")
    else:
        print(f"API返回中没有找到result字段,完整返回内容:{json.dumps(api_data, indent=2)}")
else:
    print(f"请求失败,HTTP状态码:{response.status_code}")

3. 关键提醒:Etherscan API必须加API Key

免费版API Key可以在Etherscan官网申请,不加的话很快会触发限流,返回错误信息(比如Max rate limit reached),这时候result字段会是错误字符串而非交易列表,自然转不成DataFrame。

4. 排查返回结构(调试用)

如果还是有问题,先打印完整的返回数据,确认result字段的位置和类型:

print(json.dumps(api_data, indent=2))

这样能直观看到JSON结构,避免因为特殊返回格式(比如嵌套结构)导致提取错误。

内容的提问来源于stack exchange,提问作者Merdok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:41:41