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

如何在Google Sheets中用IMPORTXML抓取下拉选项对应表格数据?

解决Google Sheets抓取动态加载的股票历史高低数据问题

因为目标网页是通过**表单提交(POST请求)**加载对应选项的数据,而非URL参数跳转,所以直接拼接URL的方法无效。以下是适合非专业编码者的可行方案:

方案一:使用Google Apps Script模拟表单提交

这是最可靠的方法,能模拟用户选择下拉选项并提交的操作,获取对应数据:

  1. 打开你的Google Sheets,点击顶部菜单「扩展程序」→「Apps Script」,进入脚本编辑器。
  2. 删除默认的myFunction代码,替换为以下脚本(已添加关键注释):
function fetchStockData() {
  // 获取当前工作表
  const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 提取A列中所有非空的选项值(从A2开始)
  const tickerList = activeSheet.getRange("A2:A").getValues().filter(row => row[0] !== "");
  const targetUrl = "https://www.ksestocks.com/HistoryHighLow";

  // 遍历每个选项值,抓取对应数据
  tickerList.forEach((ticker, idx) => {
    // 构造表单提交参数(需和网页实际提交的参数一致,可通过浏览器抓包确认)
    const formPayload = {
      selscrip: ticker[0],
      submit: "Submit" // 网页提交按钮的参数,若实际不同需修改
    };

    // 设置POST请求选项
    const requestOptions = {
      method: "post",
      payload: formPayload,
      headers: {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
      }
    };

    try {
      // 发送POST请求,获取对应页面内容
      const response = UrlFetchApp.fetch(targetUrl, requestOptions);
      const htmlContent = response.getContentText();

      // 使用Cheerio库解析HTML(需先添加库,步骤见下方)
      const $ = Cheerio.load(htmlContent);
      // 用你提供的XPath对应的CSS选择器定位目标数据
      const targetData = $("html > body > div:nth-child(2) > div > table > tbody > tr > td > div:nth-child(2) > table > tbody > tr:nth-child(3) > td > table > tbody > tr:nth-child(3) > td:nth-child(2)").text().trim();

      // 将数据写入B列对应行(A2对应B2,以此类推)
      activeSheet.getRange(idx + 2, 2).setValue(targetData);
    } catch (error) {
      // 捕获错误,写入B列提示
      activeSheet.getRange(idx + 2, 2).setValue(`抓取失败: ${error.message}`);
    }
  });
}
  1. 添加Cheerio解析库:
    在脚本编辑器中点击「资源」→「库」,输入库ID 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0,选择最新版本,点击「添加」。

  2. 运行脚本:
    点击脚本编辑器顶部的运行按钮,首次运行会要求授权Google账号权限,按照提示完成授权即可。脚本会自动遍历A列的选项值,将对应数据写入B列。

关键注意事项

  • 若表单提交参数(如submit的值)与网页实际不符,需通过浏览器抓包确认:打开目标网页按F12进入开发者工具,选择「网络」标签,选择下拉选项并提交,找到POST请求,查看「Form Data」中的参数,修改脚本里的formPayload。
  • 如果遇到抓取失败,可尝试调整headers中的User-Agent为当前浏览器的标识,模拟真实浏览器请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:40:15