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

使用BeautifulSoup清除code标签内容后,为何未获取其余标签文本?

问题背景

我有如下HTML文本(已翻译为中文):

<p>在一篇讨论ResNet的文章里有这样一段表述</p>

<p><strong>第二种是瓶颈单元,由三个堆叠操作组成。用1x1、3x3、1x1的卷积序列替代了之前的设计。这两个1x1操作用于降维和恢复维度。这使得中间的3x3卷积可以在密度更低的特征向量上运算。另外,BN(批量归一化)会在每个卷积之后、ReLU非线性激活之前应用。</strong></p>

<p>我不太理解“<code>这使得中间的3x3卷积可以在密度更低的特征向量上运算</code>”这句话是什么意思?具体来说,<code>密度更低的特征向量</code>指什么?是什么导致了这种特征向量的产生?</p>

我的需求是:清除所有<code>标签内的内容,然后提取其余标签中的文本。我尝试了以下Python代码:

soup = BeautifulSoup(text, 'html.parser')
tag = soup.code
tag.clear()
tag 

但执行后仅输出<code></code>,请问为何其余文本未被提取?


问题原因

你的代码存在两个核心问题:

  1. 仅处理了单个<code>标签:soup.code只会匹配HTML中的第一个<code>标签,而你的文本里有多个<code>标签,其余的并没有被清空。
  2. 未提取整个文档的文本:你最后只返回了被清空的单个<code>标签对象,而没有对处理后的整个文档调用文本提取方法。
正确实现代码

要完成需求,需要遍历所有<code>标签清空内容,再提取整个文档的文本:

from bs4 import BeautifulSoup

# 替换为你的HTML文本(已翻译为中文)
html_text = """
<p>在一篇讨论ResNet的文章里有这样一段表述</p>

<p><strong>第二种是瓶颈单元,由三个堆叠操作组成。用1x1、3x3、1x1的卷积序列替代了之前的设计。这两个1x1操作用于降维和恢复维度。这使得中间的3x3卷积可以在密度更低的特征向量上运算。另外,BN(批量归一化)会在每个卷积之后、ReLU非线性激活之前应用。</strong></p>

<p>我不太理解“<code>这使得中间的3x3卷积可以在密度更低的特征向量上运算</code>”这句话是什么意思?具体来说,<code>密度更低的特征向量</code>指什么?是什么导致了这种特征向量的产生?</p>
"""

# 解析HTML
soup = BeautifulSoup(html_text, 'html.parser')

# 遍历所有<code>标签,逐个清空内容
for code_tag in soup.find_all('code'):
    code_tag.clear()

# 提取处理后的所有文本,用换行分隔不同段落
result = soup.get_text(separator='\n').strip()

print(result)
代码解释
  • soup.find_all('code'):找到HTML中所有<code>标签,确保全部被处理。
  • code_tag.clear():清空单个<code>标签内的所有内容。
  • soup.get_text(separator='\n'):提取整个文档的文本,separator='\n'让不同段落的文本换行显示,避免拥挤;.strip()去除首尾的空白字符。
运行结果
在一篇讨论ResNet的文章里有这样一段表述

第二种是瓶颈单元,由三个堆叠操作组成。用1x1、3x3、1x1的卷积序列替代了之前的设计。这两个1x1操作用于降维和恢复维度。这使得中间的3x3卷积可以在密度更低的特征向量上运算。另外,BN(批量归一化)会在每个卷积之后、ReLU非线性激活之前应用。

我不太理解“”这句话是什么意思?具体来说,指什么?是什么导致了这种特征向量的产生?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:40:09