The*_*asn 2 javascript css node.js google-chrome-devtools puppeteer
我试图用 Puppeteer 解析的 HTML 看起来像这样:
<ul>
<li class="title"> item 1 </li>
<li class="title hide"> item 1 </li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我正在访问这样的li元素:
await page.$$eval("ul > li.title", nodes =>
nodes.map(element => {
return {
//some attributes
};
})
);
Run Code Online (Sandbox Code Playgroud)
扩展的结果是只检索没有class=hide. 不幸的hide是,除了 之外还有一个类title,它由所有<li>元素共享。
如何重构 Puppeteer 代码以排除具有hide类的元素?
您应该使用:not()CSS 伪类来选择不包含 class 的元素.hide:
await page.$$eval('ul > li.title:not(.hide)', nodes =>
nodes.map(element => {
return {
// some attributes
};
})
);
Run Code Online (Sandbox Code Playgroud)
在另一方面,你也可以filter()的nodes,只包括不元素matches()的的.hide选择器字符串:
await page.$$eval('ul > li.title', nodes =>
nodes.filter(e => !e.matches('.hide')).map(element => {
return {
// some attributes
};
})
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2727 次 |
| 最近记录: |