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

如何判断BeautifulSoup获取的div列表中是否含class带new的span

最优解决方案:判断div列表中是否存在class含“new”的span元素

方法一:基于已获取的div列表(高效短路判断)

如果你已经拿到了目标div列表(比如通过divs = soup.find_all('div', role='news_item')),不用逐个遍历检查到底,用any()配合生成器表达式就行——它会在找到第一个符合条件的元素后立刻停止,不用遍历全部div,性能更优:

# 从已有div列表中判断
has_target_span = any(div.find('span', class_=lambda cls: cls and 'new' in cls) for div in divs)

这里的lambda函数用来判断span的class属性里是否包含“new”,any()只要有一个div满足条件就返回True,否则返回False。

方法二:直接从文档中一步查询(更简洁)

如果还没单独获取div列表,直接用BeautifulSoup的CSS选择器一步到位更高效,省去先取div列表的步骤:

# 直接从整个文档中查找匹配的元素
has_target_span = bool(soup.select_one('div[role="news_item"] span[class*="new"]'))
  • div[role="news_item"]定位目标div
  • span[class*="new"]匹配class属性包含“new”的span元素
  • select_one()找到第一个匹配元素就返回,bool()把结果转成True/False

为什么比手动遍历好?

手动遍历需要逐个检查每个div,哪怕找到第一个符合条件的元素也得继续跑完全部;而上面两种方法都是短路判断,找到目标就立刻停止,性能更优,代码也更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:22:01