首页 > 解决方案 > 将亚马逊列表中的文本提取到 Google 表格中的最佳方法是什么?

问题描述

目的: 我正在尝试将 Amazon.com 列表中的产品特征(要点)提取到 Google 电子表格中。

问题: 我尝试了 4 种不同的方法,但都没有奏效。


function productFeatures(url) {   
  var content = UrlFetchApp.fetch(url).getContentText();
  var match = content.match(/<span class="a-list-item">/);
  return match && match [1] ? match[1] : 'Title not found'; 
}
// via https://screencast.com/t/pkxiFcg6my

这是我得到的回复:

自定义功能:( https://screencast.com/t/WL9Ay6UQemK

运行“IMPORTHTML”的响应:“导入内容为空”

运行“IMPORTXML”的响应:“无法解析导入的 Xml 内容。”

目标: 我将不胜感激任何帮助解决这个问题。

标签: google-sheetsgoogle-sheets-importxml

解决方案


我不是正则表达式的专家,但经过一些研究,我能够让它工作:

我使用下面的自定义函数来获取第一个要点

function BP1(url) {   
  var content = UrlFetchApp.fetch(url).getContentText();
  var match = content.match(/<li><span.*>([^<]*)<\/span><\/li>/g);
  return match  && match ? match[7]: 'BP not found';
}

对于每个后续产品功能,我刚刚创建了一个相应的函数,将匹配数提高 1。例如,功能 5 具有以下功能:

function BP5(url) {   
  var content = UrlFetchApp.fetch(url).getContentText();
  var match = content.match(/<li><span.*>([^<]*)<\/span><\/li>/g);
  return match  && match ? match[12]: 'BP not found';
}

唯一的问题是它会在前后拉动 xml 文本。我猜对这一切有更多了解的人可以解决这个问题。我只是使用 LEFT()、RIGHT() 和 LEN() 函数来清理结果

=LEFT(RIGHT(bp1(url), LEN(bp1(url))-39),LEN(bp1(url))-66)

希望这会有所帮助,我知道这不是一个完美的解决方案,但它可以为我完成工作。


推荐阅读