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

如何用BeautifulSoup的find_all提取span标签中的‘1 baño’文本?

用BeautifulSoup提取span标签中的文本“1 baño”

给定的span标签包含SVG元素和目标文本,可通过以下方法用find_all定位后提取所需内容:

核心思路

由于span内部存在SVG子标签,直接调用.string会返回None(多子节点场景下无法直接获取文本),需通过文本提取方法过滤掉标签内容,保留纯文本。

代码实现

from bs4 import BeautifulSoup

# 待解析的HTML内容
html = '''
<span>
 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" width="16" height="16" 
  class="icon icon-small ">
  <path fill-rule="evenodd" d="M9 19.5V7.25A4.25 4.25 0 0113.25 
  3a1 1 0 010 2A2.25 2.25 0 0011 7.25V19.5h3a3.5 3.5 0 013.752-3.491 4.5 4.5 0 017.496 
  0A3.5 3.5 0 0129 19.5h2a1 1 0 010 2h-.8l.14 1.403a6 6 0 01-5.46 6.575l.569 1.706a1 1 0 
  11-1.898.632l-.683-2.051a1.001 1.001 0 01-.05-.265h-9.635a1.001 1.001 0 
  01-.05.265l-.684 2.051a1 1 0 11-1.898-.632l.569-1.705a6 6 0 01-5.46-6.576L5.8 21.5H5a1 
  1 0 010-2h4zm7 0h11a1.5 1.5 0 00-1.969-1.426l-.87.286-.361-.842a2.5 2.5 0 00-4.6 
  0l-.36.842-.871-.286A1.5 1.5 0 0016 19.5zm-8.19 2l-.16 1.602a4 4 0 003.98 
  4.398h12.74a4 4 0 003.98-4.398l-.16-1.602H7.81zm6.86-11.949a1 1 0 01-2 0V7.5a1 1 0 112 
  0v2.051zm3.12- 
  2.316a1 1 0 01-1.897.633l-.684-2.052a1 1 0 011.898-.632l.684 2.051z"></path>
 </svg>
 1 baño
</span>
'''

# 初始化BeautifulSoup解析器
soup = BeautifulSoup(html, 'html.parser')

# 方法1:使用find_all定位所有span,通过get_text提取并清理文本
spans = soup.find_all('span')
for span in spans:
    # strip=True自动去除首尾空白和换行
    target_text = span.get_text(strip=True)
    if target_text:
        print(target_text)  # 输出:1 baño

# 方法2:遍历span的子节点,筛选纯文本节点
for span in spans:
    for node in span.contents:
        # 筛选出非空的纯文本节点
        if hasattr(node, 'string') and node.string.strip():
            print(node.string.strip())  # 输出:1 baño

关键说明

  • find_all('span')会定位页面中所有span标签,若需更精准定位,可添加属性筛选(如find_all('span', class_='xxx'))。
  • get_text(strip=True)会自动合并span内所有文本并去除多余空白,适合快速提取。
  • 若需精确控制文本来源,可遍历contents属性筛选NavigableString类型的节点,避免意外提取其他子标签的文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:54:24