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

如何用Google Sheets的IMPORTXML导入Racemap赛事计时表格?

Google Sheets 导入Racemap赛事表格的解决思路

核心问题分析

你用IMPORTXML失败的原因是:目标页面的表格是React动态渲染的内容,IMPORTXML只能抓取页面初始加载的静态HTML,无法获取JS执行后生成的动态DOM元素,所以直接定位ReactVirtualized__Grid这类动态生成的Div肯定拿不到数据。

可行解决方案

1. 抓取页面的API接口(优先推荐)

打开浏览器开发者工具(F12)→ 切换到「Network」标签→ 刷新页面,筛选「XHR/Fetch」类型的请求,查找返回赛事数据的JSON接口(通常路径包含api、timing等关键词)。找到接口后:

  • 若接口返回格式清晰,可直接使用Google Sheets的IMPORTJSON函数(需先在插件商店安装「IMPORTJSON」插件),示例公式:
    =IMPORTJSON("找到的API接口URL")
    
  • 若接口需要参数或验证,可复制请求的完整URL(包含query参数)尝试导入。

2. 使用Google Apps Script爬取动态数据

如果找不到公开API,可通过脚本提取页面预加载的初始数据(很多React站点会把初始数据存在页面的window.__INITIAL_STATE__变量里):

  1. 打开Google Sheets→ 点击「扩展程序」→「Apps脚本」
  2. 替换默认代码为以下示例(需根据实际数据结构调整):
    function importRacemapTimingData() {
      const targetUrl = "https://racemap.com/timing/olympus-mythical-trail_2023-03-13";
      const pageHtml = UrlFetchApp.fetch(targetUrl).getContentText();
      
      // 提取页面中预加载的初始状态数据
      const stateRegex = /window\.__INITIAL_STATE__ = (.*?);/;
      const matchResult = pageHtml.match(stateRegex);
      
      if (!matchResult) return;
      const timingData = JSON.parse(matchResult[1]);
      const raceEntries = timingData.timing?.entries || [];
      
      // 将数据写入当前工作表
      const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      activeSheet.clearContents();
      
      // 写入表头
      if (raceEntries.length > 0) {
        const headers = Object.keys(raceEntries[0]);
        activeSheet.getRange(1, 1, 1, headers.length).setValues([headers]);
        
        // 写入行数据
        const dataRows = raceEntries.map(entry => Object.values(entry));
        activeSheet.getRange(2, 1, dataRows.length, headers.length).setValues(dataRows);
      }
    }
    
  3. 点击运行按钮授权权限,执行脚本即可将数据导入表格。

3. 改用第三方爬虫工具导出后导入

如果上述方法都无法实现,可使用支持JS渲染的爬虫工具抓取数据后导出为CSV格式,再直接导入Google Sheets。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:52:50