如何使用bs4获取父标签中不含子标签内容的文本?
用BeautifulSoup提取父div内容并排除嵌套子div
你可以通过以下两种方法实现需求:
方法一:移除嵌套子div后提取文本
先定位到目标父div,移除内部的子div,再提取剩余文本:
HTML结构
<div> <div id="1">Text 1 <div id="2"> Text 2</div> </div> </div>
Python代码
from bs4 import BeautifulSoup html = ''' <div> <div id="1">Text 1 <div id="2"> Text 2</div> </div> </div> ''' soup = BeautifulSoup(html, 'html.parser') # 定位到id为1的div div1 = soup.find('div', id='1') # 找到内部id为2的div并移除 div2 = div1.find('div', id='2') div2.extract() # 提取文本并清理多余空格换行 target_text = div1.get_text(strip=True) print(target_text) # 输出:Text 1
方法二:直接筛选文本节点
遍历父div的子节点,只保留纯文本节点的内容:
Python代码
from bs4 import BeautifulSoup html = ''' <div> <div id="1">Text 1 <div id="2"> Text 2</div> </div> </div> ''' soup = BeautifulSoup(html, 'html.parser') div1 = soup.find('div', id='1') # 筛选出所有文本节点,拼接后清理格式 target_text = ''.join([node.strip() for node in div1.contents if isinstance(node, str)]).strip() print(target_text) # 输出:Text 1
内容的提问来源于stack exchange,提问作者El1syum
相关产品推荐
相关产品推荐

