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

如何用BeautifulSoup提取指定多个无类名span元素的文本?

提取指定span内容的解决方案

你用find()只拿到detail1是因为这个方法只会返回匹配到的第一个元素,要获取后面的detail2和detail3,可以试试下面几种方法:

  • 方法1:获取所有span后切片提取
    先拿到<p class="details">下的所有span元素,再通过索引选取第3、4个(索引从0开始,对应位置2和3):
all_spans = data.find("p", class_="details").find_all("span")
# 单独提取
detail2 = all_spans[2].text
detail3 = all_spans[3].text
# 或者直接打包成列表
target_details = [span.text for span in all_spans[2:]]
  • 方法2:用CSS选择器精准定位
    如果HTML结构固定,可以用CSS选择器直接选中目标位置的span:
# 单独获取每个目标span
detail2 = data.select_one("p.details span:nth-child(3)").text
detail3 = data.select_one("p.details span:nth-child(4)").text

# 一次性获取所有符合条件的span(从第3个开始的所有span)
target_spans = data.select("p.details span:nth-child(n+3)")
target_details = [span.text for span in target_spans]
  • 方法3:基于已知元素的兄弟节点定位
    如果后续结构可能变动,但detail2和3始终在带class="number"的span后面,可以先找到这个span,再获取它后面的兄弟元素:
number_span = data.find("span", class_="number")
# 获取number span之后的所有兄弟span
target_spans = number_span.find_next_siblings("span")
target_details = [span.text for span in target_spans]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:20:49