使用ImportXML导入彩票头奖至Google Sheets失败求助
解决OLG彩票头奖金额导入Google Sheets的问题
由于OLG网站的头奖数据是通过JavaScript动态渲染生成的,IMPORTXML这类仅能抓取静态HTML的公式无法获取目标数据,以下是使用Google Apps Script的解决方案:
步骤1:创建Google Apps Script
- 打开目标Google Sheets文档,点击顶部菜单栏的「扩展程序」→「Apps Script」
- 删除默认代码,替换为以下脚本:
function getOLGJackpots() { const url = "https://www.olg.ca/en/lottery/top-games.html"; const options = { 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 response = UrlFetchApp.fetch(url, options); const html = response.getContentText(); // 提取Lotto Max头奖及Max Millions const lottoMaxMatch = html.match(/Lotto Max.*?jackpot-amount">(.*?)<\/span>.*?Max Millions.*?jackpot-amount">(.*?)<\/span>/s); const lottoMax = lottoMaxMatch ? `${lottoMaxMatch[1]} + ${lottoMaxMatch[2]}` : "数据获取失败"; // 提取Lotto 6/49金球奖金额 const lotto649Match = html.match(/Lotto 6\/49.*?Gold Ball Jackpot.*?jackpot-amount">(.*?)<\/span>/s); const lotto649 = lotto649Match ? lotto649Match[1] : "数据获取失败"; // 提取LOTTARIO头奖金额 const lottarioMatch = html.match(/LOTTARIO.*?jackpot-amount">(.*?)<\/span>/s); const lottario = lottarioMatch ? lottarioMatch[1] : "数据获取失败"; return [ ["Lotto Max", lottoMax], ["Lotto 6/49", lotto649], ["LOTTARIO", lottario] ]; }
- 点击脚本编辑器的「保存」按钮,为项目命名(例如
OLGJackpotFetcher)
步骤2:在Google Sheets中调用函数
回到Google Sheets文档,在任意空白单元格输入公式:
=getOLGJackpots()
按下回车后,将自动生成两列数据,分别展示彩票名称与对应头奖金额。
步骤3(可选):设置自动刷新
若需要定时自动更新数据:
- 返回Apps Script编辑器,点击顶部菜单栏的「编辑」→「当前项目的触发器」
- 点击「添加触发器」按钮,设置以下参数:
- 要运行的函数:
getOLGJackpots - 部署类型:
Headless - 事件源:「时间驱动」
- 时间基于:「计时器」
- 触发频率(如每小时、每天)
- 要运行的函数:
- 保存触发器,脚本将按设定频率自动更新数据
注意事项
- 若OLG网站页面结构发生变化,正则表达式可能失效,需根据新的HTML结构调整匹配规则
- 脚本中设置的
User-Agent用于模拟浏览器请求,避免被网站反爬机制拦截 - 首次运行脚本会弹出权限授权提示,需允许脚本访问网络及电子表格
内容的提问来源于stack exchange,提问作者T White
相关产品推荐
相关产品推荐

