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

如何使用BeautifulSoup提取不含子标签的单个标签

提取不包含子标签的单个

标签方法

要筛选出仅包含文本、没有嵌套其他标签的

标签,可以用以下两种方法实现:

方法一:利用回调函数判断子节点类型

通过find_all的回调函数,检查每个

标签的子节点是否全部为文本类型(NavigableString):

from bs4 import BeautifulSoup
from bs4.element import NavigableString

html = """
<p><a href='XYZ'>Text1</a></p>
<p>Text2</p>
<p><a href='QWERTY'>Text3</a></p>
<p>Text4</p>
"""
soup = BeautifulSoup(html, 'html.parser')

# 筛选符合条件的p标签
target_ps = soup.find_all(lambda tag: tag.name == 'p' and all(isinstance(child, NavigableString) for child in tag.children))

print(target_ps)

执行后输出:

[<p>Text2</p>, <p>Text4</p>]

方法二:使用CSS选择器(需BeautifulSoup 4.7.0+)

借助CSS伪类:not(:has(*))直接筛选不包含任何子元素的

标签:

from bs4 import BeautifulSoup

html = """
<p><a href='XYZ'>Text1</a></p>
<p>Text2</p>
<p><a href='QWERTY'>Text3</a></p>
<p>Text4</p>
"""
soup = BeautifulSoup(html, 'html.parser')

# 通过CSS选择器定位目标标签
target_ps = soup.select('p:not(:has(*))')

print(target_ps)

同样会得到你期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:15:39