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

Selenium Python遍历元素时获取重复data-date值问题求助

解决Selenium重复获取子元素值的问题

问题根源在于你使用的XPath是绝对路径查询://div[@class='diary-day-date'] 会从整个HTML文档的根节点开始搜索,所以每次循环都只会返回页面中第一个匹配的diary-day-date元素,自然输出重复。

要实现从当前diary-day区块内查询子元素,必须改用相对路径——在XPath开头加上./,表示从当前遍历的i节点(也就是单个diary-day区块)开始向下搜索。

修改后的代码:

driver.get("site")
time.sleep(3)

diary_main = driver.find_elements(By.XPATH, "//div[@class='diary-day']")
for i in diary_main:
    # 用相对路径定位当前区块内的子元素
    diary_date = i.find_element(By.XPATH, ".//div[@class='diary-day-date']").get_attribute("data-date")
    print(diary_date)
    print(i.text)
    time.sleep(2)

额外优化方案:

也可以直接一次性定位所有目标子元素,同时关联父元素内容,减少循环内的查询操作:

driver.get("site")
time.sleep(3)

# 直接定位所有diary-day下的date元素
date_elements = driver.find_elements(By.XPATH, "//div[@class='diary-day']/div[@class='diary-day-date']")
for elem in date_elements:
    diary_date = elem.get_attribute("data-date")
    print(diary_date)
    # 通过父节点获取对应diary-day的文本
    print(elem.find_element(By.XPATH, "./..").text)
    time.sleep(2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:57:20