【问题标题】:Importing specific data from complex page data using ImportData function使用 ImportData 函数从复杂页面数据中导入特定数据
【发布时间】:2021-03-23 10:48:13
【问题描述】:

我正在开发一个电子商务数据导入器,其主要任务是使用谷歌电子表格导入产品数据和图像。

一切都很好,除了产品图片,它使用 JavaScript 动态传递到页面,因此无法使用谷歌电子表格功能抓取。

经过一番研究,我发现当 ImportData 函数应用于产品链接时,产品图像正在返回。

Importdata 调用返回类似this 的内容。

如您所见,它必须被转置,而且我还必须添加列以使其适合一张纸。

您可以在“GO”列中看到我需要的信息。它重复了大约 14 次。第一次是在GO169

我的最终目标是将每个产品的产品图像连接在一个单元格中并用逗号分隔。

我的问题是,是否有一个 importxml 函数查询可以返回后面跟着 (image:[") 事物甚至 (@type:"Product") 的元素,您可以在 (GO157 ) 单元格。

或任何想法如何实现我的目标将不胜感激。

非常感谢您。

【问题讨论】:

  • 很遗憾,从您的问题来看,我无法理解您的预期情况。我为此道歉。为了正确理解您的问题,能否提供您期望的示例输出情况?
  • Hello Tanaike 我的预期输出应该是(GO 列)单元格编号 169,170,171 中的链接(它们是指向产品图像的链接),没有其余的页面数据
  • 感谢您的回复。从您的回复中,我提出了一个答案。你能确认一下吗?如果这不是您期望的方向,我深表歉意。

标签: google-apps-script xpath google-sheets google-sheets-formula


【解决方案1】:

我相信你的目标如下。

  • 您想从https://www.zara.com/tr/en/windowpane-check-shirt-p03182668.html?v1=96230160&v2=1676978 的 URL 中检索以下值。

      https://static.zara.net/photos///2021/V/0/3/p/3182/668/802/2/w/1920/3182668802_6_1_1.jpg?ts=1615888138279
      https://static.zara.net/photos///2021/V/0/3/p/3182/668/802/2/w/1920/3182668802_6_2_1.jpg?ts=1615888208926
      https://static.zara.net/photos///2021/V/0/3/p/3182/668/802/2/w/1920/3182668802_6_3_1.jpg?ts=1615888190335
    

当我看到 URL 的 HTML 时,我确认这些值包含在 JSON 对象中。在这种情况下,我想建议使用 Google Apps 脚本创建的自定义函数来实现您的目标。因为当使用 Google Apps Script 时,可以使用 JSON.parse() 简单地解析 JSON 对象。示例脚本如下。

示例脚本:

请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中,并保存。

function SAMPLE(url) {
  const res = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  const value = [...res.getContentText().matchAll(/<script type\="application\/ld\+json">([\w\s\S]+?)<\/script>/g)];
  if (!value || value.length == 0) throw new Error("Values cannot be retrieved.");
  const obj = JSON.parse(value[0][1]);
  return obj[0].image;
}
  • 当你使用这个脚本时,请将=SAMPLE("https://www.zara.com/tr/en/windowpane-check-shirt-p03182668.html?v1=96230160&amp;v2=1676978")放到一个单元格中。这样,自定义函数将使用 URL 运行。
  • 根据您的预期值,我确认这些值是数组的第一个元素。

结果:

使用上述脚本时,得到如下结果。

注意:

  • 此示例脚本适用于 https://www.zara.com/tr/en/windowpane-check-shirt-p03182668.html?v1=96230160&amp;v2=1676978 的 URL。因此,当您使用其他 URL 时,可能无法使用该脚本。所以请注意这一点。

参考资料:

【讨论】:

  • 您好 Tanaike 非常感谢您的帮助,它非常有效。我有一个相关的问题。如何访问 url 的 json 对象,我的意思是有没有办法获取所有可用的 json 键?或者您如何假设图像对象中存在链接。谢谢
  • @mostafam123g 关于你的新问题,我愿意支持你。但我必须为我糟糕的英语水平道歉。不幸的是,关于你的新问题,我无法理解你想要做什么。那么我可以问一下您期望的示例输入和输出值吗?通过这个,我想试着理解它。
  • 非常感谢您回复我。我的问题是:您在回答中说“当我看到 URL 的 HTML 时,我确认这些值包含在 JSON 对象中”问题:如何知道 JSON 对象中包含的键网页?如何查看与之相关的键和值?示例输入:URL 示例输出:json 对象键是 = 1. 名称 = x 2. 价格 = y 3. z = t 等..
  • @mostafam123g 感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,从您的回复中,我仍然无法理解您的新问题。但我想试着理解它。当我能正确理解它时,我想考虑解决方案。我深表歉意,我无法尽快解决您的问题。你能给我一点时间来了解你的新问题吗?
猜你喜欢
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多