如何从Beautiful Soup结果中移除多余标签?仅保留<p>标签内容
提取
标签内容并移除嵌套div的解决方案
嘿,这事儿用Python的BeautifulSoup来处理简直完美,它专门对付这种HTML解析和清理的需求。我给你写个完整的实现步骤:
步骤1:安装依赖(如果还没装的话)
打开终端跑这个命令:
pip install beautifulsoup4
步骤2:编写处理代码
直接用你提供的page变量,代码如下:
from bs4 import BeautifulSoup # 你的原始HTML内容 page = """ <p style="text-align: justify">content that I want <div ><!-- /316485075/agk_116000_pos_3_sidebar_mobile --> <div id="agk_116000_pos_3_sidebar_mobile"> <script> script code </script> </div> <div class="nopadding clearfix hidden-print"> <div align="center" class="col-md-12"> <!-- /316485075/agk_116000_pos_4_conteudo_desktop --> <div id="demo">...</div></div></div></p> """ # 解析HTML soup = BeautifulSoup(page, 'html.parser') # 定位到目标<p>标签(通过style属性精准匹配) target_paragraph = soup.find('p', style="text-align: justify") # 移除<p>标签内所有的<div>元素 for div_element in target_paragraph.find_all('div'): div_element.decompose() # decompose会彻底删除标签及其内部所有内容 # 获取清理后的内容 # 如果只想拿纯文本: clean_text = target_paragraph.get_text(strip=True) print(clean_text) # 输出: content that I want # 如果想保留<p>标签本身(只去掉里面的div): clean_html = str(target_paragraph) print(clean_html) # 输出: <p style="text-align: justify">content that I want </p>
为什么不推荐正则表达式?
虽然正则也能凑活用,但HTML的结构太灵活了,比如div嵌套、属性变化都会让正则失效,BeautifulSoup会帮你处理这些边缘情况,靠谱得多。
内容的提问来源于stack exchange,提问作者Hygor Christian
相关产品推荐
相关产品推荐

