如何提取Dune数据至Pandas DataFrame?无法定位execution ID
把Dune页面数据提取成Pandas DataFrame的解决办法
一、先搞定Execution ID
你要找的execution ID其实就在目标链接里:https://dune.com/queries/1431599/2427930,其中2427930就是execution ID,前面的1431599是查询ID(query ID)。如果之后链接更新,还有两种手动查找方式:
- 打开浏览器按F12进入开发者工具,切换到「Network」标签页,刷新页面后搜索
results,找到带execution_id参数的请求链接,参数值就是你要的ID。 - 点击页面右上角的「Share」按钮,复制的分享链接里同样包含这两个ID,直接拆分出来即可。
二、用API提取数据转成DataFrame
首先得去Dune个人设置里申请一个API Key,然后用下面的代码实现:
import requests import pandas as pd # 替换成你自己的API Key dune_api_key = "你的Dune API密钥" query_id = 1431599 execution_id = 2427930 # 调用API获取数据 api_url = f"https://api.dune.com/api/v1/query/{query_id}/results?execution_id={execution_id}" headers = {"X-Dune-API-Key": dune_api_key} response = requests.get(api_url, headers=headers) data = response.json() # 转换为Pandas DataFrame df = pd.DataFrame(data["result"]["rows"]) print(df.head())
三、额外注意事项
- 免费版Dune API有请求次数限制,注意不要超出配额。
- 如果旧的execution ID失效(比如查询结果更新),可以调用API触发新执行来获取最新ID,代码参考:
import requests import pandas as pd import time dune_api_key = "你的Dune API密钥" query_id = 1431599 # 触发新查询执行 execute_url = f"https://api.dune.com/api/v1/query/{query_id}/execute" execute_res = requests.post(execute_url, headers={"X-Dune-API-Key": dune_api_key}) execution_id = execute_res.json()["execution_id"] # 等待查询执行完成 while True: status_url = f"https://api.dune.com/api/v1/execution/{execution_id}/status" status_res = requests.get(status_url, headers={"X-Dune-API-Key": dune_api_key}) if status_res.json()["state"] == "COMPLETED": break time.sleep(5) # 获取最终结果并转换为DataFrame result_url = f"https://api.dune.com/api/v1/execution/{execution_id}/results" result_res = requests.get(result_url, headers={"X-Dune-API-Key": dune_api_key}) df = pd.DataFrame(result_res.json()["result"]["rows"]) print(df.head())
内容的提问来源于stack exchange,提问作者Francisco4535
相关产品推荐
相关产品推荐

