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

如何用Python BeautifulSoup获取嵌套div>p>span元素的内容

解决方法

你的代码主要存在三个问题:没有精准定位目标容器、打印的是标签对象而非文本内容、未处理文本中的多余空白。以下是优化后的实现方案:

方案一:层级定位法

import requests
from bs4 import BeautifulSoup

req = requests.get(url, headers)
soup = BeautifulSoup(req.content, 'html.parser')

# 直接定位到目标div(id为output),避免遍历所有无关div
target_div = soup.find("div", id="output")
if target_div:
    # 遍历该div下的所有p标签
    for p_tag in target_div.find_all("p"):
        # 查找当前p标签内的span
        span_tag = p_tag.find("span")
        if span_tag:
            # 提取文本并去除前后空白
            target_content = span_tag.get_text(strip=True)
            print(target_content)

方案二:CSS选择器法(更简洁)

import requests
from bs4 import BeautifulSoup

req = requests.get(url, headers)
soup = BeautifulSoup(req.content, 'html.parser')

# 用CSS选择器直接定位到目标层级的span标签
target_spans = soup.select("div#output p span")
for span in target_spans:
    print(span.get_text(strip=True))

核心优化点:

  • 精准定位:通过id="output"直接锁定目标div,避免处理页面中其他无关的div元素
  • 文本提取:使用get_text(strip=True)获取标签内的纯文本,并自动去除换行、空格等无效空白
  • 简化逻辑:CSS选择器可以一步到位定位到目标元素,减少多层循环嵌套

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:05:32