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

如何抓取克利夫兰联储通胀数据并导入Google Sheets

克利夫兰联储通胀预测表格导入Google Sheets解决方案

目标站点设置了反爬校验,且部分内容通过客户端脚本渲染,IMPORTDATA/IMPORTHTML/IMPORTXML这类原生函数无法通过反爬校验,也拿不到渲染完成的DOM结构,因此抓取失败,可通过以下方案实现需求:

方案1:使用Google Apps Script抓取(最适配Google Sheets)

操作步骤

  • 打开目标Google Sheets,点击顶部菜单栏「扩展程序」>「Apps Script」进入脚本编辑器
  • 删除编辑器内默认的myFunction示例代码,粘贴以下代码:
function fetchInflationNowcasting() {
  // 配置请求头模拟浏览器访问,绕过基础反爬
  const options = {
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    },
    muteHttpExceptions: true
  };
  const url = 'https://www.clevelandfed.org/our-research/indicators-and-data/inflation-nowcasting.aspx';
  const response = UrlFetchApp.fetch(url, options);
  const html = response.getContentText();

  // 解析月度表格
  const monthlyTable = parseTable(html, 'Monthly Inflation Nowcasting');
  // 解析季度表格
  const quarterlyTable = parseTable(html, 'Quarterly Inflation Nowcasting');

  // 写入数据到当前表格,可修改Sheet名称自定义存储位置
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  if (monthlyTable.length) {
    const monthlySheet = ss.getSheetByName('月度通胀预测') || ss.insertSheet('月度通胀预测');
    monthlySheet.clearContents();
    monthlySheet.getRange(1, 1, monthlyTable.length, monthlyTable[0].length).setValues(monthlyTable);
  }
  if (quarterlyTable.length) {
    const quarterlySheet = ss.getSheetByName('季度通胀预测') || ss.insertSheet('季度通胀预测');
    quarterlySheet.clearContents();
    quarterlySheet.getRange(1, 1, quarterlyTable.length, quarterlyTable[0].length).setValues(quarterlyTable);
  }
}

function parseTable(html, tableTitle) {
  // 匹配标题对应的表格块
  const titleRegex = new RegExp(`${tableTitle}[\\s\\S]*?<table[\\s\\S]*?>([\\s\\S]*?)</table>`, 'i');
  const tableMatch = html.match(titleRegex);
  if (!tableMatch) return [];
  const tableHtml = tableMatch[1];
  // 提取行数据
  const rowRegex = /<tr[\\s\\S]*?>([\\s\\S]*?)</tr>/gi;
  const rows = [];
  let rowMatch;
  while ((rowMatch = rowRegex.exec(tableHtml)) !== null) {
    const rowHtml = rowMatch[1];
    // 提取单元格数据
    const cellRegex = /<t[hd][\\s\\S]*?>([\\s\\S]*?)</t[hd]>/gi;
    const cells = [];
    let cellMatch;
    while ((cellMatch = cellRegex.exec(rowHtml)) !== null) {
      // 清理单元格内的HTML标签和空白字符
      const cellText = cellMatch[1].replace(/<[^>]+>/g, '').trim();
      cells.push(cellText);
    }
    if (cells.some(cell => cell)) rows.push(cells);
  }
  return rows;
}
  • 点击编辑器顶部的保存按钮,项目名称任意填写,然后选中fetchInflationNowcasting函数,点击运行按钮,按照提示完成Google账号授权(授权提示为未验证应用时,点击「高级」>「前往[项目名]」即可继续)
  • 运行完成后回到Google Sheets,会自动生成「月度通胀预测」「季度通胀预测」两个Sheet,对应你需要的两张表格数据

后续更新操作

需要刷新数据时,重新打开Apps Script运行该函数即可,也可以设置脚本触发器,按天/周自动更新数据。

方案2:直接抓取官方CSV数据源(更稳定)

目标站点公开了对应数据的CSV下载端点,不需要解析HTML,抓取效率更高且数据格式更规整:

  • 找到页面内对应表格的CSV下载地址,替换到上述脚本的请求URL中,直接用Utilities.parseCsv()解析返回内容即可,不需要写HTML解析逻辑。

注意事项

  • 请求频率不要高于1次/小时,避免触发站点反爬限制导致权限被封禁
  • 若站点页面结构更新导致解析失败,调整parseTable函数内的匹配规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:04