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

解决Google Sheet IMPORTXML获取Shazam实时数字返回空内容问题

解决Google Sheet IMPORTXML获取Shazam实时数据返回空的问题

问题原因

Shazam的页面内容是通过JavaScript动态渲染的,而IMPORTXML只能抓取服务器直接返回的静态HTML源码,无法识别JS加载后的动态元素,因此会返回「Imported content is empty」。

解决方法

方法1:使用Google Apps Script自定义函数

这是最可靠的方案,能抓取动态渲染后的内容并实现定时更新:

  1. 打开目标Google Sheet,点击「扩展程序」→「Apps Script」
  2. 删除默认代码,粘贴以下脚本:
function getShazamPlays(trackId) {
  const url = `https://www.shazam.com/track/${trackId}/cruel-summer`;
  const response = UrlFetchApp.fetch(url, {
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
  });
  const html = response.getContentText();
  // 匹配页面中的播放量数字(可根据页面结构调整正则)
  const playCountMatch = html.match(/<em[^>]*>([\d,.]+)<\/em>/);
  if (playCountMatch && playCountMatch[1]) {
    // 移除千位分隔符,返回纯数字
    return playCountMatch[1].replace(/,/g, '');
  } else {
    return "数据获取失败";
  }
}
  1. 保存脚本(命名例如ShazamDataTool),首次运行会提示授权,按指引完成权限验证
  2. 在Sheet单元格中输入=getShazamPlays(488840226),即可获取目标歌曲的播放量

设置每小时自动更新

  • 在Apps Script界面点击「编辑」→「当前项目的触发器」
  • 点击「添加触发器」,配置:
    • 选择函数:getShazamPlays
    • 事件源:「时间驱动」
    • 类型:「小时计时器」,选择每小时执行一次

方法2:验证并修正XPath(仅针对静态内容)

如果坚持用IMPORTXML,需重新确认目标元素的正确XPath:

  1. 打开Shazam歌曲页面,按F12打开开发者工具
  2. 找到播放量元素,右键选择「复制」→「复制 XPath」
  3. 替换原公式中的XPath,但注意:若元素是JS动态生成,此方法仍会返回空,仅适用于静态渲染的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:24:58