小能豆

如何获取除`<b>`节点文本之外的文本

py

如何获取除<b>节点文本之外的文本


阅读 19

收藏
2025-01-05

共1个答案

小能豆

如果您有一个包含 HTML 的字符串,并希望提取除了 <b> 标签中的文本之外的所有文本,可以使用 Python 的 BeautifulSoup 库。以下是实现这一功能的示例代码:

示例代码

from bs4 import BeautifulSoup

# 假设有如下 HTML 文本
html_content = """
<div>
    This is some <b>bold text</b> and this is <b>another bold text</b>.
    Here is some normal text.
</div>
"""

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

# 移除所有 <b> 标签
for bold in soup.find_all('b'):
    bold.extract()

# 获取剩余的文本
remaining_text = soup.get_text(strip=True)
print(remaining_text)

输出

This is some and this is .
Here is some normal text.

解释

  1. 解析 HTML
    使用 BeautifulSoup(html_content, 'html.parser') 解析 HTML。

  2. 移除 <b> 节点
    使用 find_all('b') 找到所有 <b> 节点,并通过 .extract() 将其从 DOM 中移除。

  3. 获取剩余的文本
    使用 .get_text(strip=True) 提取移除 <b> 标签后的纯文本。

注意事项

  • 如果您希望保留其他 HTML 结构而仅移除 <b> 标签的内容,可以改用 decompose() 方法清除 <b> 节点,或替换为特定的占位符。
  • 如果 HTML 内容嵌套复杂,可以进一步调整逻辑以处理不同的需求。

示例:只替换 <b> 标签的文本

如果您希望保留 <b> 标签但删除其内容,可以尝试:

for bold in soup.find_all('b'):
    bold.string = ''  # 清空内容

result = soup.get_text(strip=True)
print(result)
2025-01-05