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

Google Sheets使用IMPORTXML抓取晨星基金NAV提示URL资源未找到

错误原因

  • 反爬拦截:晨星官网对非浏览器端发起的请求设置了校验规则,Google Sheets内置的IMPORTXML函数发起的请求未携带正常浏览器的User-Agent、Cookie等必要信息,直接被服务端拒绝访问,因此返回Resource at url not found报错。
  • 协议不匹配:你使用的是HTTP协议的URL,当前晨星该页面已强制HTTPS访问,HTTP请求会被直接拦截或重定向,进一步提升了访问失败概率。
  • 动态渲染问题:你在浏览器「检查元素」中看到的//span[@vkey='NAV']节点是页面加载完成后通过JavaScript动态渲染生成的,IMPORTXML仅能读取页面初始静态源码中的内容,静态源码中不存在该节点,即便成功访问页面也无法抓取到对应数据。

你用到的IMPORTXML函数定义:IMPORTXML(url, xpath_query, locale)

可行解决方案

方案1:使用Google Apps Script自定义抓取函数(最稳定)

通过Apps Script模拟浏览器发起请求,绕过反爬限制,同时用正则匹配提取NAV数值,操作步骤如下:

  1. 打开目标Google Sheets,依次点击「扩展程序」→「Apps Script」打开脚本编辑器
  2. 清空原有代码,粘贴下方代码后点击保存:
function getFundNAV(fundCode) {
  const requestUrl = `https://quotes.morningstar.com/fund/c-header?t=${fundCode}`;
  const requestOptions = {
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    },
    muteHttpExceptions: true
  };
  try {
    const response = UrlFetchApp.fetch(requestUrl, requestOptions);
    const pageContent = response.getContentText();
    // 正则规则可根据页面实际源码结构调整
    const navResult = pageContent.match(/<span[^>]*vkey="NAV"[^>]*>([\d.]+)<\/span>/);
    return navResult ? navResult[1] : "未匹配到NAV数据";
  } catch (e) {
    return "请求失败,请检查基金代码";
  }
}
  1. 回到Google Sheets表格,直接输入公式=getFundNAV("FID215")即可获取对应基金的NAV数据。

方案2:改用静态公开数据源

如果不想自定义脚本,可选择支持IMPORTXML直接抓取的公开基金数据平台,优先选择页面内容全部为静态渲染、无强制反爬校验的站点,再对应调整XPath表达式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:27:04