【问题标题】:What is the best way to extract text from Amazon listings into Google Sheets?将亚马逊列表中的文本提取到 Google 表格中的最佳方法是什么?
【发布时间】:2019-08-31 09:10:22
【问题描述】:

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

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

  • 导入XML: IMPORTXML("https://www.amazon.com/dp/B07JD2GDKN","//ul/li/showHiddenFeatureBullets")
  • 导入HTML:
    IMPORTHTML("https://www.amazon.com/dp/B07JD2GDKN","list",1)
  • 正则表达式替换(IMPORTXML): REGEXREPLACE(IMPORTXML("https://www.amazon.com/dp/B07JD2GDKN","//feature-bullets"),"Amazon.com: ","")
  • 自定义函数:productFeatures ("https://www.amazon.com/dp/B07JD2GDKN")

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-sheets google-sheets-importxml


【解决方案1】:

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

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

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)

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

【讨论】:

    猜你喜欢
    • 2022-10-25
    • 1970-01-01
    • 2012-11-14
    • 2015-11-14
    • 2011-05-26
    • 2019-12-04
    • 2011-02-24
    • 2014-10-30
    • 2010-09-09
    相关资源
    最近更新 更多