在Google表格ImportXML中提取元数据

时间:2020-05-15 21:44:11

标签: xpath google-sheets metadata google-sheets-importxml

是否仍然可以使用Google表格中的ImportXML从网站中提取价格等元数据?

我在下一页上尝试了多种不同的版本,但均未成功:https://www.officedepot.com/a/products/273646/Office-Depot-White-Copy-Paper-Letter/

=IMPORTXML("https://www.officedepot.com/a/products/273646/Office-Depot-White-Copy-Paper-Letter/","//*[contains(@itemprop,'price')]/@content")

=IMPORTXML("https://www.officedepot.com/a/products/273646/Office-Depot-White-Copy-Paper-Letter/","//meta[@itemprop='price']/@content")

我应该能够使用此公式返回“ 58.99”,但是我不断收到NA错误。

1 个答案:

答案 0 :(得分:1)

OfficeDepot似乎阻止了GoogleSheets的请求。 一些线索:

enter image description here

您需要一个API key和一个ImportJSON脚本(归功于Brad Jasper)。安装脚本并激活API密钥后,add a search engine。在设置中,您必须定义目标网站。

enter image description here

将搜索引擎ID(cx = XXXXXXXXXX)复制到某个位置。完成此操作后,假设您在A列中有网址,则可以粘贴到单元格B2中:

=REGEXEXTRACT(A2;"products\/(\d+)")

这是用于提取产品ID。

在单元格C2中,您可以粘贴:

="https://customsearch.googleapis.com/customsearch/v1?cx={yoursearchengineID}&key={yourAPIkey}&num=1&fields=items(pagemap(offer(price)))&q="&B2

我们构造对API的请求。您需要在此公式中添加API密钥和搜索引擎ID。

在单元格D2中,您可以粘贴:

=QUERY(ImportJSON(C2);"SELECT Col1 label Col1''";1)

这用于导入.json结果并对其进行一些清理。

注意:此方法可能不适用于某些产品(新产品)。我在欧洲。所以“;”公式中的“”应替换为“,”。