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

如何稳定提取包含固定类与动态变化类的div标签信息?

嘿,这个动态类名的坑我可踩过不少!其实完全不用正则就能完美解决你的问题,而且方法更简单可靠。

最优方案:只匹配固定的三个类,忽略动态类

BeautifulSoup 支持两种非常方便的方式来匹配同时拥有多个固定类的元素,不管元素有没有其他额外的类(比如那个动态的jssxxx):

方法1:使用class_参数传入类名列表

你可以直接把三个固定类名放进列表里,BeautifulSoup会自动匹配同时包含所有这些类的元素,完全无视其他类:

val = soup.find_all('div', class_=['abc', 'def', 'xyz'])

方法2:使用CSS选择器(更简洁推荐)

CSS选择器的多类选择器语法刚好适合这种场景,只要把固定类用.连起来,就能匹配同时拥有这些类的div:

val = soup.select('div.abc.def.xyz')

这两种方法的核心逻辑是一致的:只要目标div同时有abc、def、xyz这三个类,不管它还有没有其他动态生成的类(比如jss238或jss384),都会被匹配到。这样就彻底避免了动态类名变化导致的代码失效问题。

备选方案:用正则处理动态类(不推荐,除非必要)

如果你确实需要用到正则(比如某些特殊场景下固定类也有变化),也可以用正则表达式匹配完整的class属性:

import re
# 匹配包含abc、def、jss+数字、xyz的class属性
val = soup.find_all('div', class_=re.compile(r'abc def jss\d+ xyz'))

不过这种方式可读性差,而且如果类名的顺序发生变化(虽然一般不会),正则就会失效,所以还是优先推荐前面两种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:32:46