如何使用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
相关产品推荐
相关产品推荐

