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

Google Sheets中IMPORTXML抓取雅虎财经数据报错如何解决?

解决方案

报错原因

  • 初始公式的双引号嵌套语法错误你已完成修正:XPath中属性值的双引号和整个XPath参数的双引号冲突,改用单引号的操作是正确的。
  • 后续“资源未找到”的核心原因:雅虎财经页面的新闻稿列表部分为JavaScript动态渲染内容,IMPORTXML仅能获取页面初始静态HTML的内容,你原先使用的summaryPressStream-0-Stream节点是页面加载完成后JS动态插入的,初始静态响应中不存在该节点,因此XPath匹配失败。
  • 附加影响因素:雅虎财经有基础反爬策略,IMPORTXML的默认请求头容易被识别为爬虫,返回拦截页面而非正常内容。

可用解决方法

方法1:使用匹配静态节点的简化XPath

静态页面中新闻标题实际存放在带有data-test-locator属性的a标签内,直接匹配该属性即可,无需逐层定位嵌套节点,公式如下:

=IMPORTXML("https://finance.yahoo.com/quote/NTRB/press-releases", "//a[@data-test-locator='pr-headline'][1]/text()")

说明:[1]表示匹配第一个符合条件的标题,也就是头条内容。

方法2:用Google Apps Script自定义函数绕过反爬

如果方法1仍被反爬拦截,可以自定义脚本函数,添加正常浏览器的User-Agent头请求页面,再提取内容:

  1. 打开谷歌表格,点击「扩展程序」-「Apps Script」,清空原有代码粘贴以下内容:
function getYahooPressFirstTitle(ticker) {
  const url = `https://finance.yahoo.com/quote/${ticker}/press-releases`;
  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'
    }
  };
  const response = UrlFetchApp.fetch(url, options);
  const content = response.getContentText();
  const titleMatch = content.match(/data-test-locator="pr-headline".*?>(.*?)<\/a>/);
  return titleMatch ? titleMatch[1] : "未找到对应内容";
}
  1. 保存项目后回到表格,直接输入公式=getYahooPressFirstTitle("NTRB")即可返回第一条头条标题。

注意事项

  • 不要短时间内多次高频请求雅虎财经接口,否则可能触发IP临时限制,导致请求失败。
  • 雅虎页面的属性标识可能不定期更新,如果匹配失败可以打开页面源码,搜索新闻标题内容,更新对应匹配规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:36:03