我正在尝试开发匹配每个Span标签的javascript代码,并使用类名'a-size-base a-color-price s-price a-text-bold',并在Array中返回它的innerhtml。所以基本上我需要数组列表中每个垃圾邮件的价格。
有人可以告诉我如何做这个,因为我不知道如何将匹配函数与classname放在一起并采用它的innerHTML。
<span class="a-size-base a-color-price s-price a-text-bold">EUR 16,90</span>
<span class="a-size-base a-color-price s-price a-text-bold">EUR 20,09</span>
<span class="a-size-base a-color-price s-price a-text-bold">EUR 19,90</span>
<span class="a-size-base a-color-price s-price a-text-bold">EUR 12,90</span>
答案 0 :(得分:1)
如果您的输入与提供的示例类似,则应该有效:
// Since .querySelectorAll returns a NodeList and we want an
// Array we'll use the spread operator to make it one.
let prices = [...document.querySelectorAll('span.size-a-base')]
.map(el => {
// sample input was EUR 19,90 so we'll split on the space
// and grab the price.
let [currency, price] = el.textContent.trim().split(' ');
return price;
});
答案 1 :(得分:0)
在这里,您可以使用正则表达式来获取span / class = value的价格 您正在寻找的是捕获组2。
/<span(?=(?:[^>"']|"[^"]*"|'[^']*')*?\sclass\s*=\s*(?:(['"])\s*a-size-base\s*a-color-price\s*s-price\s*a-text-bold\s*\1))\s+(?:"[\S\s]*?"|'[\S\s]*?'|[^>]*?)+>([\S\s]*?)<\/span\s*>/
(警告,使用正则表达式解析html可能很危险)
https://regex101.com/r/myziY9/1
刮刀系列
格式化:
< span
(?= # Assertion (a pseudo atomic group)
(?: [^>"'] | " [^"]* " | ' [^']* ' )*?
\s
class \s* = \s* # class attribute
(?:
( ['"] ) # (1), # quote begin
\s*
a-size-base \s* a-color-price \s* s-price \s* a-text-bold # value to find
\s*
\1 # quote end
)
)
\s+
(?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]*? )+
>
( [\S\s]*? ) # (2), content
</span \s* >