=importxml,网站到 Google 表格 - 每次都得到 #N/A

=importxml, Website to Google Sheets - getting #N/A every time

网站Link

https://redacted

xml 到目前为止我尝试过的选项

<span aria-labelledby="amount">722</span>

//*[@id="amount"]/h3/span[2]

/html/body/div[3]/main/div/span/div/div/div[2]/div/div/div[2]/div/div[2]/div[3]/div/div/div/div[2]/div[1]/h3/span[2]

None 工作

尝试从此处 =importxml @ 值“722”,无论如何这是 22 年 5 月 5 日的值。

TIA!

您需要找到另一个包含您试图抓取的情报的网站。 #N/A 错误是 google 工作表不支持导入 JavaScript 元素的结果。您始终可以通过在站点设置中禁用 JS 来检查兼容性,通常只有剩下的才能被废弃。在这种情况下它什么都没有:

不幸的是,您的预期值似乎无法使用 XPath 直接检索。因为使用 Javascript 将值放入 HTML 并且 IMPORTXML 无法分析 Javascript 的结果。但是,幸运的是,您的期望值似乎作为 JSON 数据包含在 HTML 中。因此,在这个答案中,我想从 JSON 数据中检索值。

模式 1:

在此模式中,使用了 IMPORTXML 和 REGEXEXTRACT。

=ARRAYFORMULA(REGEXEXTRACT(IMPORTXML(A1,"//script[@data-component-name='GetOfferWrapper']"),"defaultEstimatedValue"":(.+?)}"))
  • URL https://www.gazelle.com/iphone/iphone-13-pro-max/other/iphone-13-pro-max-1tb-other/498082-gpid 放在单元格“A1”中。

  • 当使用这个公式时,得到如下结果。

模式二:

在此模式中,使用了由 Google Apps 脚本创建的自定义函数。从 JSON 数据中检索值时,Google Apps 脚本很有用。当您使用此脚本时,请将以下脚本复制并粘贴到电子表格的脚本编辑器中并保存脚本。并且,请将 =SAMPLE("https://www.gazelle.com/iphone/iphone-13-pro-max/other/iphone-13-pro-max-1tb-other/498082-gpid") 的自定义函数放入单元格。

function SAMPLE(url) {
  const res = UrlFetchApp.fetch(url).getContentText();
  const data = res.match(/<script.+data-component-name="GetOfferWrapper".+?>([\w\s\S]+?)<\/script>/);
  if (!data || data.length == 0) return "No data";
  const obj = JSON.parse(data[1]);
  return obj.initState.defaultEstimatedValue;
}
  • URL https://www.gazelle.com/iphone/iphone-13-pro-max/other/iphone-13-pro-max-1tb-other/498082-gpid 放在单元格“A1”中。

  • 当使用这个公式时,取回722的值。

注:

  • 公式和自定义函数可用于当前HTML。因此,当 HTML 的规格发生变化时,这些可能无法使用。请注意这一点。

参考文献: