表格中的 Google 表格网页抓取表格

时间:2021-05-11 22:41:09

标签: google-apps-script google-sheets

在此网站上,https://finance.yahoo.com/quote/ANZ.AX/financials - 我正在尝试将 2017 列中“基本每股收益”的值提取到单元格 J12(谷歌表)中。

我在单元格 C12 中有 ANZ.AX 股票代码。

在 J12 中我有公式:

=EPSGROWTH("https://finance.yahoo.com/quote/"&C12&"/financials")

GROWTH 脚本是我遇到问题的地方,因为通常 'xxxx' 是 html 中要匹配的唯一字符串,但在这种情况下,它是 'fin-col' 出现在页面上的任何地方。

function EPSGROWTH(url) {
  const res = UrlFetchApp.fetch(url).getContentText().match(/xxxx.+?>(.+?)</);
  return res && res.length > 1 ? res[1] : "No value";
}

是不是因为这是表中表? (无论哪种方式我都不知道解决方案)

显然,我的方法可能与我的方法相去甚远,但希望该解决方案对于编码新手来说很简单:)

欢迎任何帮助并非常感谢。 干杯

1 个答案:

答案 0 :(得分:2)

在这种情况下,如何直接从与 Javascript 一起使用的 JSON 数据中检索值?这是相关的线程。 Ref 当你的脚本被修改后,变成如下。

修改后的脚本:

function EPSGROWTH(url) {
  const res = UrlFetchApp.fetch(url).getContentText().match(/"annualBasicEPS":(\[.+?])/);
  if (res && res.length > 1) {
    const obj = JSON.parse(res[1]).filter(e => e && e.asOfDate && e.asOfDate.includes("2017"));
    return obj.length > 0 ? obj[0].reportedValue.fmt : "No value"; // or obj[0].reportedValue.raw
  }
  return "No value";
}
  • 在这种情况下,似乎当使用 obj[0].reportedValue.raw 而不是 obj[0].reportedValue.fmt 时,可以检索原始值。

结果:

当使用上述修改后的脚本时,变成如下。

enter image description here

参考: