如何使用Python提取接口JSON指定字段并导出为双列CSV文件
Python实现接口JSON数据提取并导出CSV的方案
完全可以通过Python完成你的需求,你可以参考以下两种实现方案:
方案1:使用Python内置csv模块(无额外依赖)
无需安装第三方库,直接使用Python标准库实现,适合轻量使用场景,完整代码如下:
import os import requests import csv url='https://api.blockchair.com/litecoin/transactions?a=date,f(avg(output_total)/number(100000000))' # 要提取的长字段名提前定义为常量,避免拼写错误 TARGET_FIELD = "f(avg(output_total)/number(100000000))" # 导出的CSV文件名 EXPORT_FILE = "litecoin_data.csv" proxies = {} response = requests.get(url=url, proxies=proxies) # 校验请求是否成功,失败会抛出异常 response.raise_for_status() # 解析响应为JSON格式 res_json = response.json() data_list = res_json.get("data", []) # 写入CSV文件 with open(EXPORT_FILE, "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=["date", "value"]) # 写入表头 writer.writeheader() # 循环写入每行数据 for item in data_list: writer.writerow({ "date": item.get("date"), "value": item.get(TARGET_FIELD) }) print(f"数据已成功导出到{EXPORT_FILE}")
方案2:使用pandas实现(代码更简洁)
如果后续需要对数据做进一步分析处理,推荐使用pandas,代码更简洁,需要先安装依赖:pip install pandas
实现代码如下:
import os import requests import pandas as pd url='https://api.blockchair.com/litecoin/transactions?a=date,f(avg(output_total)/number(100000000))' TARGET_FIELD = "f(avg(output_total)/number(100000000))" EXPORT_FILE = "litecoin_data.csv" proxies = {} response = requests.get(url=url, proxies=proxies) response.raise_for_status() res_json = response.json() data_list = res_json.get("data", []) # 转DataFrame并重命名列 df = pd.DataFrame(data_list).rename(columns={TARGET_FIELD: "value"}) # 导出CSV,设置不导出行索引 df.to_csv(EXPORT_FILE, index=False, encoding="utf-8") print(f"数据已成功导出到{EXPORT_FILE}")
注意事项
- 导出的CSV文件默认保存在当前代码运行的工作目录下,你可以修改
EXPORT_FILE变量自定义保存路径 - 如果有代理需求,直接补充
proxies字典的配置即可 - 你可以根据需求自行添加异常捕获逻辑,处理JSON解析失败、字段缺失等边缘情况
内容的提问来源于stack exchange,提问作者user17087759
相关产品推荐
相关产品推荐

