首页 > 解决方案 > 我可以只抓取没有特定属性的元素吗?

问题描述

在 bs4 中,我想应用过滤器来抓取没有特定属性的元素。很难解释,所以考虑这个例子:

有 5 个“div”元素。其中 4 个具有“class”和“id”属性,第 5 个具有“class”、“id”和“style”属性。我只想抓取前 4 个。

我知道我可以soup.find_all('div', {'class': '<class-name>', 'id': '<id>'} 为我想要的属性应用过滤器,但我可以为我不想要的属性应用额外的过滤器。

请参阅下面的示例 HTML 代码:

示例代码

标签: pythonweb-scrapingbeautifulsoup

解决方案


使用 CSS Selector :not(),你可以得到这样的结果

soup.select('div:not(div[style="display: none;"])')

:not()指示选择每个不是 div[style="display: none;"] 元素的元素


推荐阅读