是否仍然可以使用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错误。
答案 0 :(得分:1)
OfficeDepot似乎阻止了GoogleSheets的请求。 一些线索:
直接从.json获取价格(由于请求被阻止,因此我们无法使用ImportJSON
脚本直接在Sheets中加载价格)。相应地更改网址中的产品ID:
另一种选择是使用SerpAPI(商业)+ ImportJSON从GoogleShooping获取产品价格。
或者您可以使用GoogleSearch API(免费)+ ImportJson
。输出:
您需要一个API key和一个ImportJSON脚本(归功于Brad Jasper)。安装脚本并激活API密钥后,add a search engine。在设置中,您必须定义目标网站。
将搜索引擎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结果并对其进行一些清理。
注意:此方法可能不适用于某些产品(新产品)。我在欧洲。所以“;”公式中的“”应替换为“,”。