使用BeautifulSoup从HTML元素集中筛选非直播赛事的实现方法
非直播赛事元素筛选解决方案
可以实现,有两种常用实现方案:
- 方案一:直接通过CSS选择器过滤(优先推荐)
BeautifulSoup 4.7.0及以上版本支持CSS的:not()伪类选择器,你可以直接在selector里排除带有.is-live类的元素,无需二次处理,执行效率最高:
game_elements_not_live = html.select(".cardEvent.prebootFreeze.ng-star-inserted:not(.is-live)")
- 方案二:对已有集合做差集过滤
如果你的BeautifulSoup版本较低不支持:not()选择器,可以通过列表推导式遍历全量赛事元素,排除属于直播赛事的元素即可:
game_elements_not_live = [item for item in game_elements if item not in game_elements_live]
第二种方案需要做元素存在性判断,当赛事元素量级较大时,执行效率会略低于第一种直接选择的方案。
内容的提问来源于stack exchange,提问作者Maxime Lara
相关产品推荐
相关产品推荐

