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

如何将指定网站XML格式体育赔率数据导入Google Spreadsheet?

嘿,我来帮你解决这个Google Sheets导入体育赔率的问题!之前用IMPORTHTML失效是因为网站换成XML格式了,别担心,咱们有两个可行方案,下面给你详细拆解:

方案一:用IMPORTXML函数直接导入(简单快捷)

IMPORTXML是Google Sheets专门用来抓取XML/HTML数据的函数,刚好适配现在的网站格式。你可以按列分别提取需要的字段:

  1. 先在你的Google表格里,把目标URL放在一个固定单元格,比如A1,输入:http://www.scoresandodds.com/gameDate/2019-11-08
  2. 然后在其他列输入对应的公式:
    • A列(主队名称):在A2输入 =IMPORTXML($A$1, "//game/teams/team[@is_home='1']/name"),回车后会自动填充所有主队名称
    • B列(客队名称):在B2输入 =IMPORTXML($A$1, "//game/teams/team[@is_home='0']/name")
    • C列(实时比分/赛果):可以分开提取主客队比分再合并,比如C2输入 =IMPORTXML($A$1, "//game/teams/team[@is_home='1']/score") & " - " & IMPORTXML($A$1, "//game/teams/team[@is_home='0']/score")
    • D列(当前Spread Line):D2输入 =IMPORTXML($A$1, "//game/odds/spread/line")
    • E列(主队Moneyline):E2输入 =IMPORTXML($A$1, "//game/odds/moneyline/home")
    • F列(客队Moneyline):F2输入 =IMPORTXML($A$1, "//game/odds/moneyline/away")

小技巧:验证XPath是否正确

如果公式返回错误,大概率是XPath路径不对。你可以打开目标URL,右键查看页面源代码,找到对应的XML节点,然后用Chrome开发者工具(按F12)选中节点,右键选择「复制」→「复制XPath」,替换公式里的路径即可。

方案二:用Google Apps Script自定义导入(更灵活)

如果IMPORTXML因为网站反爬或者结构复杂失效,就用脚本抓取,自由度更高:

  1. 打开你的Google表格,点击顶部菜单「工具」→「脚本编辑器」
  2. 清空默认代码,粘贴下面的脚本:
function importSportsOdds() {
  // 目标URL
  var url = "http://www.scoresandodds.com/gameDate/2019-11-08";
  // 获取XML内容
  var response = UrlFetchApp.fetch(url);
  var xmlDoc = XmlService.parse(response.getContentText());
  var root = xmlDoc.getRootElement();
  var games = root.getChildren("game");
  
  // 获取当前工作表
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clearContents();
  
  // 写入表头
  var headers = ["主队", "客队", "比分", "Spread Line", "主队Moneyline", "客队Moneyline"];
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  
  // 遍历所有比赛数据
  for (var i = 0; i < games.length; i++) {
    var game = games[i];
    var teams = game.getChild("teams").getChildren("team");
    var homeTeam = "", awayTeam = "", homeScore = "", awayScore = "";
    
    // 区分主客队
    teams.forEach(function(team) {
      if (team.getAttribute("is_home").getValue() === "1") {
        homeTeam = team.getChild("name").getText();
        homeScore = team.getChild("score").getText();
      } else {
        awayTeam = team.getChild("name").getText();
        awayScore = team.getChild("score").getText();
      }
    });
    
    // 提取赔率数据
    var odds = game.getChild("odds");
    var spreadLine = odds.getChild("spread").getChild("line").getText();
    var homeMoneyline = odds.getChild("moneyline").getChild("home").getText();
    var awayMoneyline = odds.getChild("moneyline").getChild("away").getText();
    
    // 写入表格行
    var rowIndex = i + 2;
    sheet.getRange(rowIndex, 1).setValue(homeTeam);
    sheet.getRange(rowIndex, 2).setValue(awayTeam);
    sheet.getRange(rowIndex, 3).setValue(`${homeScore} - ${awayScore}`);
    sheet.getRange(rowIndex, 4).setValue(spreadLine);
    sheet.getRange(rowIndex, 5).setValue(homeMoneyline);
    sheet.getRange(rowIndex, 6).setValue(awayMoneyline);
  }
}
  1. 点击脚本编辑器顶部的「保存」,给脚本起个名字(比如SportsOddsImporter)
  2. 点击「运行」,第一次运行会要求授权,按照提示完成权限验证即可

进阶:设置定时自动更新

如果需要每天自动获取最新数据,点击脚本编辑器左侧的「触发器」图标,添加一个时间驱动触发器,设置每天固定时间运行importSportsOdds函数就行。

注意事项
  • 如果网站XML结构有更新,需要对应调整XPath或者脚本里的节点名称(比如game、teams这些标签)
  • 部分网站会限制非浏览器的请求,如果脚本返回错误,可以尝试给请求添加浏览器头,比如在UrlFetchApp.fetch里加参数:UrlFetchApp.fetch(url, {headers: {"User-Agent": "Mozilla/5.0"}})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:38:19