如何用Python高效去除HTML标签提取纯文本字符串?
提取BeautifulSoup Tag元素的纯文本
最可靠高效的方法:使用get_text()内置方法
BeautifulSoup已经提供了专门提取纯文本的get_text()方法,能自动处理所有HTML标签(包括<div>、<br>),无需手动写正则,避免解析错误。
基础用法
直接调用Tag对象的get_text(),可以选择是否去除多余空白、指定分隔符:
# 假设你已经获取了class为inner的Tag元素 inner_tag # 提取纯文本并去除首尾/中间多余空白 pure_text = inner_tag.get_text(strip=True) # 如果需要保留<br>或<div>带来的换行结构,指定separator参数 pure_text_with_line_breaks = inner_tag.get_text(separator='\n', strip=True)
示例演示
from bs4 import BeautifulSoup # 模拟你的HTML结构 html_content = """ <div class="inner"> <div>第一部分文本</div> <br> 第二部分文本 <div>嵌套的<div>第三部分</div>文本</div> </div> """ soup = BeautifulSoup(html_content, 'html.parser') inner_tag = soup.find(class_='inner') # 无换行的纯文本 print(inner_tag.get_text(strip=True)) # 输出:第一部分文本第二部分文本第三部分文本 # 保留换行的纯文本 print(inner_tag.get_text(separator='\n', strip=True)) # 输出: # 第一部分文本 # 第二部分文本 # 嵌套的 # 第三部分 # 文本
为什么不推荐正则?
正则表达式处理HTML标签容易出现遗漏(比如嵌套标签、带属性的标签),而get_text()是基于DOM解析的,能准确遍历所有文本节点,更稳定高效。
内容的提问来源于stack exchange,提问作者Los
相关产品推荐
相关产品推荐

