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

使用Python BeautifulSoup判断两段文本是否在同一class为div2的div中

BeautifulSoup 实现同div2标签内文本校验方法

前置依赖

首先安装需要的库:

pip install beautifulsoup4 lxml

实现思路

  1. 解析HTML结构后,先分别定位两段目标文本所在的节点,匹配时自动忽略文本前后的换行、空格等空白字符
  2. 对每个定位到的文本节点,向上递归查找父级标签,直到找到class为div2的div标签,或到HTML根节点仍找不到则返回空
  3. 判断两段文本对应的父级div2标签是否为同一个节点,即可得出是否同属一个div2的结论

完整代码示例

from bs4 import BeautifulSoup

def check_same_div2(html_str: str, text_a: str, text_b: str) -> bool:
    soup = BeautifulSoup(html_str, "lxml")
    
    # 内部工具方法:查找文本所属的最近的class为div2的父级div
    def get_div2_parent(target_text: str):
        # 匹配包含目标文本的所有节点,忽略前后空白
        text_nodes = soup.find_all(
            string=lambda s: s and target_text in s.strip()
        )
        if not text_nodes:
            return None
        # 遍历所有匹配到的文本节点,找第一个存在div2父级的
        for node in text_nodes:
            div2_parent = node.find_parent("div", class_="div2")
            if div2_parent:
                return div2_parent
        return None
    
    div2_a = get_div2_parent(text_a)
    div2_b = get_div2_parent(text_b)
    
    # 两个都找到对应的div2,且是同一个节点才返回True
    return div2_a is not None and div2_b is not None and div2_a.is_(div2_b)

# 测试用例,使用你提供的HTML
test_html = """
<html>
<head>
<title>Product Page</title>
</head>
<body>
<div class="div1">
<div class="div2">
<div class="divInside">
    Recommended
</div>
<div class="above">
    <div class="under"></div>
</div>
<div class="pct"></div>
<div class="prod">
    Product
</div>
</div>
</div>
</body>
</html>
"""

# 测试判断"Recommended"和"Product"是否同属一个div2
print(check_same_div2(test_html, "Recommended", "Product")) # 输出结果为True

自定义调整说明

  • 如果需要严格完全匹配文本(避免子串匹配错误),可以把匹配逻辑里的target_text in s.strip()改成target_text == s.strip()
  • 如果页面中存在多段重复的目标文本,可以调整工具方法返回所有匹配到的div2父级,再判断两个文本的div2集合是否有交集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:06:03