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

如何用BeautifulSoup提取同div相同class下的CDI与London两个元素

解决方法

核心思路是利用你发现的i标签name属性差异做精准定位,再获取相邻的内容节点即可,具体代码示例如下:

基础直接提取版本

# 提取London地点
location_i = soup.find("i", attrs={"name": "location"})
london = location_i.find_next("span", class_="sc-1qc42fc-2").get_text(strip=True)

# 提取CDI合同类型
contract_i = soup.find("i", attrs={"name": "contract"})
cdi = contract_i.find_next("span", class_="sc-1qc42fc-2").get_text(strip=True)

代码说明:

  • soup.find("i", attrs={"name": "location"}) 精准命中代表地点的i标签,完全避开class重复的干扰
  • 调用find_next方法找到该i标签之后第一个存储内容的span节点
  • get_text(strip=True)会自动清除文本首尾的空白、 等特殊空格字符,拿到干净的结果

异常兼容版本

如果担心页面结构变动导致节点不存在触发报错,可以封装成通用提取函数做兼容:

def extract_field(soup, i_name):
    target_i = soup.find("i", attrs={"name": i_name})
    if not target_i:
        return None
    content_span = target_i.find_next("span", class_="sc-1qc42fc-2")
    return content_span.get_text(strip=True) if content_span else None

# 调用函数提取两个字段
london = extract_field(soup, "location")
cdi = extract_field(soup, "contract")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:06