免责声明:我知道用正则表达式解析 HTML 不是正确的方法。我实际上只是想解析 HTML 中的文本。
我正在解析几页,我正在寻找价格。这是我到目前为止所拥有的:
var all = document.body.querySelectorAll(":not(script)");
var regex = /\$[0-9,]+(\.[0-9]{2})?/g;
for (var i = 0; i < all.length; i++) {
var node_value = all[i].nodeValue;
for (var j = 0; j < all[i].childNodes.length; j++) {
var node_value = all[i].childNodes[j].nodeValue;
if (node_value !== null) {
var matches = node_value.match(regex);
if (matches !== null && matches.length > 0) {
alert("that's a match");
}
}
}
}
这个特定的代码可以让我得到这样的价格:
<div>This is the current price: <span class="current">$60.00</span></div>
但是,有些价格具有以下结构:
<div>This is the current price: <sup>$</sup><span>80.00</span></div>
我如何改进算法以找到这些价格?我应该用正则表达式查看第一个 for 循环<sup>symbol</sup><span>price</span>
吗?
重要提示:一旦匹配,我需要找出哪个 DOM 元素持有该价格。持有价格的最内在因素。例如:
<div><span>$80.00</span></div>
我需要说的是持有价格的元素,而不是 div。