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

如何在谷歌表格中从Finviz获取自由现金流(FCF)相关数据?

解决Finviz自由现金流(FCF)数据抓取问题

问题根源

Finviz的FCF相关数据(包括TTM值、历史数据及增长率)并非通过静态HTML表格渲染,而是依赖JavaScript动态加载。IMPORTHTML仅能解析页面初始加载时就存在的静态DOM元素,无法处理JS动态生成的内容,这就是你抓取失败且找不到对应表格索引的原因。

解决方法:用Google Apps Script抓取动态内容

通过Google Apps Script模拟浏览器请求并解析页面内容,绕过静态抓取的限制。具体步骤如下:

  1. 打开你的Google Sheets文档,点击顶部菜单栏的「扩展程序」→「Apps 脚本」
  2. 将默认代码替换为以下自定义函数:
function getFinvizFCF(ticker) {
  const url = `https://finviz.com/quote.ashx?t=${ticker}&p=d`;
  const requestOptions = {
    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'
    }
  };
  
  try {
    const response = UrlFetchApp.fetch(url, requestOptions);
    const pageHtml = response.getContentText();
    
    // 匹配TTM自由现金流(单位可能为B/M)
    const ttmFCF = pageHtml.match(/Free Cash Flow.*?(\d+\.?\d*[BM])/)?.[1] || 'N/A';
    // 匹配FCF增长率(同比)
    const fcfGrowth = pageHtml.match(/FCF Growth.*?(\d+\.?\d*%)/)?.[1] || 'N/A';
    // 匹配上年FCF数据(需根据页面实际结构调整正则)
    const lastYearFCF = pageHtml.match(/Free Cash Flow.*?(\d+\.?\d*[BM]).*?(\d+\.?\d*[BM])/)?.[2] || 'N/A';

    return [ttmFCF, lastYearFCF, fcfGrowth];
  } catch (error) {
    return ['请求失败', error.message];
  }
}
  1. 点击「保存」,给脚本命名(比如FinvizFCFGrabber)
  2. 返回Sheets表格,在单元格中输入=getFinvizFCF("MCD"),即可获取麦当劳的TTM FCF、上年FCF及增长率数据(结果会按数组形式展开到相邻单元格)

注意事项

  • 反爬规避:设置User-Agent模拟真实浏览器请求,避免被Finviz屏蔽;不要短时间内批量调用该函数,防止触发反爬机制
  • 正则维护:Finviz页面结构可能会更新,如果后续匹配失败,需要打开目标页面的源代码,调整正则表达式的匹配规则
  • 数据验证:抓取到的数据建议手动和Finviz页面核对,确保正则匹配的准确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:43:24