我可以使用正则表达式在产品页面上找到最便宜的价格吗? [关闭]

Posted

技术标签:

【中文标题】我可以使用正则表达式在产品页面上找到最便宜的价格吗? [关闭]【英文标题】:Can I use regex to find the cheapest price on a product page? [closed] 【发布时间】:2017-10-19 15:45:33 【问题描述】:

我正在尝试构建一个动态脚本来从我客户的网站上抓取价格,以便使用广告定制器插入到广告中。有些产品页面很简单,因为它们只有一个价格,但在某些情况下有多个。如何编写一个脚本,使用正则表达式匹配页面上的任何价格,然后返回最便宜的价格?

【问题讨论】:

我推荐你阅读What topics can I ask about here?和How do I ask a good question?。 @Jul 构建该脚本的步骤比这里可以回答的要长。您需要构建的是一个“蜘蛛”,用于根据某些标准“爬行”您的客户网站。谷歌如何解析 html 页面。这个问题没有单一的答案。 【参考方案1】:

正则表达式有其局限性。它会匹配价格,但您需要一个脚本来处理正则表达式为您找到的信息。

假设您的问题主要是关于找到最便宜的价格,这里有一个脚本,它将获取变量 pageText,将其抓取为货币数字,转换为整数,然后获取最低的数字。

var pageText = "$65.54, hello there king cupid. $54.32 & of course 
$50. $170,000.54";
var pricesRegex = /(\$[0-9,]+(\.[0-9]2)?)/g;
var parsedPrices = pageText.match(pricesRegex);
var numbers = [];
parsedPrices.map((price) => 
numbers.push(Number(price.replace(/,/g, '').split("$")[1]));
);
var cheapestPrice = Math.min.apply(null, numbers);

【讨论】:

【参考方案2】:

你不能用正则表达式来做到这一点,至少不能完全发疯。正则表达式是一种匹配字符的工具——数字、字母等。它对字符的含义一无所知。通常,您可以使用它从另一个文本中提取部分文本,但要执行数值比较,您需要将文本转换为数字,例如使用适当的编程语言。

【讨论】:

以上是关于我可以使用正则表达式在产品页面上找到最便宜的价格吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce,在产品页面上删除价格

我可以在 querySelectorAll 中使用正则表达式吗?

在 Python 中,您可以使用 for 循环和等价 (==) 找到子字符串吗?没有正则表达式

隐藏产品可变价格,直到在 WooCommerce 中选择所有变体字段

如何更改 OpenCart 产品页面上的原始价格?

使用 WooCommerce 选择变体时更新产品页面上的价格