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

Selenium Python中如何遍历多个动态索引的div元素

Selenium Python中如何遍历多个动态索引的div元素

嗨,我来帮你解决这个问题!其实你完全不用纠结那个变化的div索引,换个思路就能轻松遍历这些动态变化的卡片标题了。

方法一:先定位所有卡片容器,再用相对路径获取标题

你观察到的xpath里,变化的部分是div[1]、div[2],这部分其实是每个卡片的外层容器。我们可以先把所有卡片的外层容器都定位到,然后遍历每个容器,再用相对xpath去获取每个卡片里的标题,这样就不用管索引变化的问题了。

举个具体的代码例子:

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

driver = webdriver.Chrome()
driver.get("你的目标网页URL")

# 先定位所有卡片的外层容器(就是那个索引变化的div的父级)
cards = driver.find_elements(By.XPATH, '//*[@id="component_2"]/div/div')

# 遍历每个卡片容器
for card in cards:
    # 用相对路径获取当前卡片的标题(注意开头的点号,代表从当前card元素开始查找)
    title_element = card.find_element(By.XPATH, './div/div/div[1]/div[2]/div[1]/div[2]')
    print(title_element.text)

为什么这个方法靠谱?

因为./开头的相对xpath是基于当前遍历的card元素来查找的,不管这个卡片在列表里是第几个(也就是不管外层的div索引是1还是2),只要每个卡片内部的结构是一致的,这个相对路径就能准确找到标题。

额外优化建议

如果可能的话,尽量避免用这种冗长的绝对xpath(比如一堆div嵌套的路径),可以看看卡片或者标题元素有没有更独特的属性(比如class、data-*属性),这样xpath会更稳定。比如如果标题有个class是card-title,那直接用./div[contains(@class, 'card-title')]会比硬写嵌套路径更靠谱,就算页面结构小幅度调整也不容易失效。

备注:内容来源于stack exchange,提问作者lasagna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:09:50