=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 的规格发生变化时,这些可能无法使用。请注意这一点。
参考文献:
网站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 的规格发生变化时,这些可能无法使用。请注意这一点。