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

如何使用Python 3 BS4提取div下所有<span>标签的数据?

解决方法:提取div下所有标签的数据

你遇到的问题很常见——TagGrab.span只会返回当前div下第一个匹配的元素,所以只能拿到data1。要获取所有span里的数据,你可以试试下面几种方法:

方法1:遍历所有标签

先定位到目标div,再用find_all('span')获取该div下的所有span,接着循环输出每个span的文本:

for TagGrab in soup.find_all('div', class_='DataInSpanTags'):
    # 获取当前div下的全部span标签
    all_span_tags = TagGrab.find_all('span')
    # 逐个提取文本
    for span in all_span_tags:
        print(span.text)

这样运行后就会依次输出data1、data2、data3。

方法2:用列表推导式一次性收集所有数据

如果需要把所有数据存到列表里方便后续处理,用列表推导式会更简洁:

# 嵌套遍历,收集所有span的文本
all_data = [span.text for div in soup.find_all('div', class_='DataInSpanTags') for span in div.find_all('span')]
print(all_data)
# 输出结果:['data1', 'data2', 'data3']

方法3:链式调用简化代码(适合单个目标div的场景)

如果页面中只有一个class="DataInSpanTags"的div,还可以直接链式调用find_all:

for span in soup.find('div', class_='DataInSpanTags').find_all('span'):
    print(span.text)

这里用find代替find_all直接定位到唯一的div,再获取它下面的所有span。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:25:48