因此,我正在抓取一个具有类似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
答案 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)