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

如何用Beautiful Soup获取嵌套在唯一类父span中的子span内容

解决方案

问题原因

  1. soup.select() 返回的是元素列表,直接调用 .text 会报错,必须取出列表中的单个元素后再操作。
  2. soup.find() 不支持完整的CSS选择器语法(比如 > 子选择器),它需要通过参数单独指定标签和属性来查找元素。

正确写法

方法一:用 select_one() 替代 select()

select_one() 返回匹配到的第一个元素(而非列表),可直接调用文本方法:

s = soup.select_one('span.uniqueParent > span.notUniqueChildClassName')
print(s.get_text(strip=True))  # strip=True 可去除文本前后的空白、换行符

也可以用属性选择器的写法:

s = soup.select_one('span[class="uniqueParent"] > span[class="notUniqueChildClassName"]')
print(s.get_text(strip=True))

方法二:用 find() 分步查找

先定位父元素,再在父元素下查找子元素:

parent = soup.find('span', class_='uniqueParent')
child = parent.find('span', class_='notUniqueChildClassName')
print(child.get_text(strip=True))

也可以链式调用简化代码:

s = soup.find('span', class_='uniqueParent').find('span', class_='notUniqueChildClassName')
print(s.get_text(strip=True))

容错补充

如果担心页面中可能不存在目标元素导致报错,可以添加判断逻辑:

parent = soup.find('span', class_='uniqueParent')
if parent:
    child = parent.find('span', class_='notUniqueChildClassName')
    if child:
        print(child.get_text(strip=True))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:35:30