是否有风格的选择器?

时间:2019-01-31 15:07:48

标签: javascript cheerio

因此,我正在抓取一个具有类似DOM的网站:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
    <p style='color: #ff9900'></p>
    <p></p>
    <p></p>
    <p style='color: #ff0000'>2</p>

    <p></p>
    <p></p>
    <p style='color: #ff9900'>3</p>
    <p></p>
    <p style='color: #ffffff'>4</p>
    <p></p>





</body>
</html>

如您所见,有<p>个标签具有样式属性。我想获取仅包含样式属性的元素。

const $ = cheerio.load(page, {
            normalizeWhitespace: true,
            xmlMode: false
        });


const item = [];
$('p:style="color:#ff9900').each(function(){
    item.push($(this).text())
})
console.log(item)

我想知道在cheerio中是否有机会将样式用作选择器。 有这样的机会p[style],但是它将返回具有这样属性的每个元素。假设我希望它返回仅具有某些样式style="color:#ff9900而不是style="color:#ffffff

的元素

1 个答案:

答案 0 :(得分:0)

我遇到了相同类型的问题,我通过将 p:style="color:#ff9900' 与 p:[style="color:#ff9900"] 一起放置来解决。 这是您的问题的解决方案

const $ = cheerio.load(page, {
            normalizeWhitespace: true,
            xmlMode: false
        });


const item = [];
$('p:[style="color:#ff9900"]').each(function(){
    item.push($(this).text())
})
console.log(item)