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

如何用BeautifulSoup的findAll一次性匹配带/不带末尾空格的同类class标签

问题原因说明

之前的代码传入固定字符串是精确匹配规则,会把class属性值的所有字符(包括末尾空格)都纳入匹配条件,因此只能命中完全一致的标签。


方案1:正则模糊匹配

如果需要严格匹配你指定的class值(仅允许末尾存在空白),可直接传入正则规则实现:

import re
items = html.findAll('h4', {'class': re.compile(r'^item-title font-weight-normal\s*$')})

规则中的\s*会匹配0个或多个任意空白字符,不管class值末尾有没有空格、有几个空格都能匹配到。


方案2:多类名匹配(更推荐)

HTML的class是多值属性,你要匹配的本质是同时携带item-title和font-weight-normal两个类的h4标签,BeautifulSoup原生支持传入类名列表匹配,会自动忽略属性值里的多余空格:

items = html.findAll('h4', class_=['item-title', 'font-weight-normal'])

该方案无需额外导入模块,兼容更多场景:就算class值前后、类名之间有多个空格,甚至类名顺序调换也能正确命中,符合HTML标准的类名识别逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:36:08