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

如何在Python Selenium中仅获取第一层子元素?

解决Python Selenium仅获取第一层直接子元素的问题

嘿,我完全懂你的困扰——之前的方法一不小心就把所有嵌套的子子元素都捞出来了,根本不是你想要的那4个直接子div!其实只要用对选择器,就能精准定位到第一层直接子元素,给你两个实用的方案:

方案1:CSS选择器直接子元素语法

CSS里的>符号就是专门用来定位直接子元素的,它只会匹配父元素下一级的元素,不会深入嵌套层级。

举个例子,假设你的父容器有个id="parent-box",想要获取它下面所有直接的div子元素,代码可以这么写:

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

driver = webdriver.Chrome()
driver.get("你的目标页面地址")

# 先定位父元素
parent = driver.find_element(By.ID, "parent-box")

# 用>选择器获取直接子div
direct_child_divs = parent.find_elements(By.CSS_SELECTOR, "> div")

# 验证数量(应该是你要的4个)
print(f"找到的直接子div数量:{len(direct_child_divs)}")

driver.quit()

如果要获取父元素下所有类型的直接子元素(不管标签),把> div换成> *就行。

方案2:XPath直接子元素定位

XPath里用./表示当前节点的直接子元素,搭配child::或者直接写标签名,就能避免递归查找所有后代。

同样用上面的父容器例子,代码如下:

# 定位父元素后,用XPath找直接子div
direct_child_divs_xpath = parent.find_elements(By.XPATH, "./div")

# 或者更明确的写法:
direct_child_divs_xpath = parent.find_elements(By.XPATH, "./child::div")

这里要注意,别用.//*或者//div,因为//会递归查找所有层级的后代元素,这就是你之前拿到8个元素的原因!

两种方法都能精准拿到你要的第一层子元素,选你顺手的用就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:35:58