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

如何通过Google Sheet IMPORTXLM获取CoinMarketCap加密货币历史最高价?

解决Google Sheets IMPORTXML无法抓取CoinMarketCap历史最高价的问题

首先纠正下,你可能打错了函数名——正确的是IMPORTXML,不是IMPORTXLM。你遇到的问题主要源于两个核心原因:

  • 动态内容加载限制:CoinMarketCap的历史最高价数据是通过JavaScript动态渲染的,而IMPORTXML只能抓取页面初始加载的静态HTML,动态加载的内容它无法直接获取。你能成功获取实时价格,是因为该数据刚好包含在静态HTML里。
  • XPath路径不可靠:你复制的历史最高价XPath依赖于页面的深层嵌套结构(比如__next下的多层节点),这类路径会因页面结构微调、动态生成的ID/类名而失效。

给你几个可行的解决思路:

1. 改用基于文本/稳定类名的XPath

先右键打开币种页面→查看页面源代码,搜索"All Time High",确认价格是否存在于静态代码中。如果能找到,用更稳定的XPath定位,比如:

//div[contains(text(), 'All Time High')]/following-sibling::div//span[@class='sc-f70bb44c-0 jxpCgO']

(注:类名可能会随网站更新变化,你需要自己在源代码里找到历史最高价对应的稳定类名,替换掉示例中的sc-f70bb44c-0 jxpCgO)

然后公式写成:

=IMPORTXML(base_url & A1, "//div[contains(text(), 'All Time High')]/following-sibling::div//span[@class='你的稳定类名']")

2. 用Google Apps Script抓取动态内容

如果历史最高价确实是动态加载的,IMPORTXML无能为力,这时候可以用Google Apps Script模拟请求获取内容:

  1. 打开Google Sheets→工具→脚本编辑器
  2. 粘贴以下代码(可根据实际情况调整正则匹配规则):
function getATH(coinSlug) {
  const url = `https://coinmarketcap.com/currencies/${coinSlug}/`;
  const html = UrlFetchApp.fetch(url).getContentText();
  // 正则匹配历史最高价格式($开头,带千分位和两位小数)
  const athMatch = html.match(/All Time High.*?(\$[\d,]+\.\d{2})/);
  return athMatch ? athMatch[1] : "无法获取";
}
  1. 保存脚本后回到表格,用=getATH(A1)调用(A1单元格填写币种的英文slug,比如bitcoin)

3. 改用CoinMarketCap官方API

官方API(免费版有调用次数限制)能稳定获取各类历史数据,比网页抓取可靠得多。你可以在表格中结合IMPORTDATA和JSON.parse解析API返回的结构化数据,完全不需要依赖页面HTML结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:25:22