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

Python/Selenium/Parsel:如何提取DIV内包含所有子元素的文本?

解决方案

直接定位目标DIV元素后,利用Selenium元素的text属性或JavaScript的textContent即可提取所有子元素(包括span)的文本内容,按原始顺序保留。

核心实现步骤

  • 定位到目标DIV元素(使用你已有的类选择器XPath)
  • 提取元素的完整文本内容,无需单独遍历span标签

代码示例

from selenium import webdriver
from selenium.webdriver.common.by import By
import re

# 初始化ChromeDriver
driver = webdriver.Chrome()

# 定位目标DIV(替换成你的类选择器XPath)
target_div = driver.find_element(By.XPATH, "//div[@class='your-target-class']")

# 方式1:用Selenium自带的text属性(渲染后文本,自动合并多余空格)
full_text = target_div.text

# 方式2:用JavaScript获取textContent(保留更原始的文本结构,包括换行)
# full_text = driver.execute_script("return arguments[0].textContent;", target_div)

# 处理空DIV的情况(你已实现,这里做示例判断)
if full_text.strip():
    # 后续用正则处理,比如提取TAC/THC的百分比
    tac_match = re.search(r'TAC:\s*(\d+\.\d+%)', full_text)
    thc_match = re.search(r'THC:\s*(\d+\.\d+%)', full_text)
    if tac_match:
        print(f"TAC值: {tac_match.group(1)}")
    if thc_match:
        print(f"THC值: {thc_match.group(1)}")
else:
    print("DIV内容为空")

# 关闭驱动
driver.quit()

为什么之前的XPath只提取了数字?

你之前的XPath应该是指定了仅获取特定span(比如带百分比的span)的文本,而没有覆盖整个DIV下的所有子元素文本。直接取DIV元素的text属性会自动拼接所有子节点的文本内容,完全符合按顺序保留的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:32:13