将亚马逊列表中的文本提取到 Google 表格中的最佳方法是什么?



目的:我正在尝试从 Amazon.com 列表中提取产品功能(要点(到Google电子表格中。

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

  • IMPORTXML:IMPORTXML("https://www.amazon.com/dp/B07JD2GDKN","//ul/li/showHiddenFeatureBullets")
  • IMPORTHTML:
    IMPORTHTML("https://www.amazon.com/dp/B07JD2GDKN","list",1)
  • REGEXREPLACE(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 内容。

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

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

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

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。例如,功能五具有以下功能:

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)

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

相关内容

最新更新