使用BeautifulSoup获取指定容器内class元素文本的最优方案
提取指定容器内的field__label与field__item文本
核心思路是先定位到.fieldset-wrapper容器,再在其内部查找目标元素,避免选中容器外的同名元素。以下是两种常用场景的实现方法:
前端JavaScript实现
// 锁定目标容器 const fieldsetWrapper = document.querySelector('.fieldset-wrapper'); // 提取所有label文本(去除首尾空格) const labelTexts = Array.from(fieldsetWrapper.querySelectorAll('.field__label')) .map(el => el.textContent.trim()); // 提取所有item文本(去除首尾空格) const itemTexts = Array.from(fieldsetWrapper.querySelectorAll('.field__item')) .map(el => el.textContent.trim()); // 按需输出,比如配对展示 labelTexts.forEach((label, idx) => { console.log(`${label}: ${itemTexts[idx]}`); });
通过fieldsetWrapper.querySelectorAll()限定查找范围,只会处理该容器内的元素,不会触及外部的同名class标签。
Python爬虫(BeautifulSoup)实现
from bs4 import BeautifulSoup # 替换为你的HTML内容 html_content = ''' <div class="fieldset-wrapper"> <div class="field field--name-field-adresse-strasse-nr field--type-string field--label-inline clearfix"> <div class="field__label">TEXT</div> <div class="field__item">TEXT</div> </div> <div class="field field--name-field-adresse-plz-ort field--type-string field--label-inline clearfix"> <div class="field__label">TEXT</div> <div class="field__item">TEXT</div> </div> <div class="field field--name-field-adressen-bundesland field--type-entity-reference field--label-inline clearfix"> <div class="field__label">TEXT</div> <div class="field__item">TEXT</div> </div> </div> ''' soup = BeautifulSoup(html_content, 'html.parser') # 定位目标容器 wrapper = soup.select_one('.fieldset-wrapper') # 提取文本 labels = [el.get_text(strip=True) for el in wrapper.select('.field__label')] items = [el.get_text(strip=True) for el in wrapper.select('.field__item')] # 配对输出 for label, item in zip(labels, items): print(f"{label}: {item}")
利用wrapper.select()缩小查找范围,确保只提取.fieldset-wrapper内部的目标元素文本。
内容的提问来源于stack exchange,提问作者Gonzalo Parra
相关产品推荐
相关产品推荐

