You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何过滤bs4.element.ResultSet里含spacer类的tr元素

解决方案

方法1:查找tr时直接过滤(推荐,效率更高)

直接在调用find_all时就排除类为spacer的tr,不需要后续二次过滤:

# 替换原来的all_trs赋值语句即可
all_trs = metacritic_soup.find_all('tr', class_=lambda c: c is None or 'spacer' not in c)

这里的lambda判断逻辑是:如果tr没有class属性,直接保留;如果有class属性,排除包含spacer的元素。

方法2:对已获取的ResultSet进行过滤

如果你已经拿到了all_trs,不想修改之前的查找逻辑,可以用列表推导式过滤:

filtered_trs = [tr for tr in all_trs if 'spacer' not in tr.get('class', [])]

这里用tr.get('class', [])是为了兼容没有class属性的tr,如果直接访问tr['class'],遇到无class的元素会抛出KeyError,默认返回空列表可以避免报错。

内容的提问来源于stack exchange,提问作者Canovice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:54:05