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

如何用Google Sheets的IMPORTXML公式抓取bonbast.com欧元汇率?为何无输出?

问题原因及解决办法

可能的原因

  • 反爬机制拦截:bonbast.com可能识别出Google Sheets的IMPORTXML请求属于自动化工具,直接返回空内容或阻止访问。这类工具的请求头特征明显,容易被网站的反爬策略拦截。
  • 页面动态渲染:欧元汇率数据可能是通过JavaScript动态加载的,而IMPORTXML只能抓取页面的静态HTML源码,无法获取JS渲染后生成的内容。
  • XPath定位失效:目标元素的id或页面结构已发生变化,//tr[@id='eur1']这个XPath已经无法匹配到对应的汇率元素。

解决建议

  1. 验证XPath有效性
    打开bonbast.com页面,右键欧元汇率所在行→检查元素,查看静态HTML源码中是否存在id="eur1"的<tr>标签。如果不存在,说明页面结构已更新,需要重新生成正确的XPath:

    • 在开发者工具的Elements面板中,右键目标元素→Copy→Copy XPath,替换原公式中的路径。
  2. 绕过反爬/处理动态内容
    若XPath正确但仍无法获取数据,大概率是反爬或动态加载导致,可改用Google Apps Script实现:

    function getEuroRate() {
      const url = "https://www.bonbast.com/";
      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 html = response.getContentText();
      // 用正则匹配欧元汇率(需根据实际页面结构调整)
      const match = html.match(/<tr[^>]*id="eur1".*?<td[^>]*>([\d,.]+)<\/td>/s);
      return match ? match[1] : "无法获取数据";
    }
    

    在Google Sheets中通过「扩展程序→Apps Script」创建脚本,粘贴上述代码后保存,即可在单元格中用=getEuroRate()调用获取汇率。

  3. 替代方案
    如果上述方法仍失效,可尝试查看浏览器开发者工具的Network面板,过滤XHR/Fetch请求,寻找包含汇率数据的接口,直接调用这类接口获取数据会更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:54:23