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

使用BeautifulSoup如何仅选择class为col-16且无其他类的div元素

BeautifulSoup 精确匹配单类名div的解决方案

你当前遇到的问题有两个核心原因:

  1. 初始代码的目标类名写为col-xs-12,和你需要匹配的col-16不一致
  2. BeautifulSoup默认的class匹配是包含匹配,只要标签class列表中存在目标值就会被选中,不会校验是否存在其他类名

实现仅匹配只有col-16类名div的两种方法:

  • 方法1:使用自定义过滤函数(兼容所有BeautifulSoup版本)
    给find_all传入自定义判断函数,直接校验class列表是否完全等于["col-16"]:

    result = soup_object.find_all(
        lambda tag: tag.name == "div" and tag.get("class") == ["col-16"]
    )
    

    原理:BeautifulSoup会将多值class属性自动拆分为列表,当且仅当div的class列表只有col-16一个元素时才会被匹配。

  • 方法2:使用CSS精确属性选择器(适用于BeautifulSoup 4.7及以上版本)
    利用CSS选择器的属性精确匹配规则,直接筛选class属性字符串完全等于col-16的div:

    result = soup_object.select('div[class="col-16"]')
    

    该方法写法更简洁,性能和自定义函数方案基本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:36:10