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

如何用Python Selenium随机识别两类行并提取目标属性?

解决Selenium随机行的类型判断与数据提取问题

核心思路

先定位到指定的main节点,获取其下所有行元素,再逐个判断行类型(Type A/Type B),最后提取对应属性。无需依赖固定行索引,完美适配行的随机顺序与数量。

实现步骤与代码

  1. 等待主节点加载并获取所有行元素
    先确保主容器节点加载完成,再获取其下所有行级元素(根据你的DOM结构,行元素是main节点下的div子元素)。
  2. 遍历行元素,判断类型并提取数据
    • 对每个行元素,先获取class属性判断是否为Type A;
    • 若不是,再检查tabindex属性判断是否为Type B;
    • 分别提取对应属性值。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 主容器XPath
main_container_xpath = '//*[@id="main"]/div[3]/div/div[2]/div[3]'
# 等待主容器加载完成
main_container = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, main_container_xpath))
)

# 获取主容器下所有行元素(根据DOM结构调整,这里假设行是直接子div)
rows = main_container.find_elements(By.XPATH, './div')

for row in rows:
    # 先判断是否为Type A:class包含"message-in focusable-list-item"
    class_attr = row.get_attribute('class')
    if class_attr and "message-in focusable-list-item" in class_attr:
        print(f"Type A - Class: {class_attr}")
        # 可在这里添加保存数据的逻辑
    else:
        # 判断是否为Type B:tabindex等于"-1"
        tabindex_attr = row.get_attribute('tabindex')
        if tabindex_attr == "-1":
            print(f"Type B - Tabindex: {tabindex_attr}")
            # 可在这里添加保存数据的逻辑

关键说明

  • 避免硬编码行索引(比如你之前的div[8]),改用遍历所有行的方式处理随机顺序;
  • 判断属性时需考虑get_attribute可能返回None的情况(比如元素无该属性),所以先做非空判断;
  • 如果行元素不是主容器的直接子div,可以调整rows的XPath(比如./div/div/div,根据实际DOM结构修改)。

内容的提问来源于stack exchange,提问作者Sam Don't Know Coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:23:16