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

如何读取Element UI表格中近2小时发布的条目?处理NoSuchElementException

解决NoSuchElementException并筛选表格中最近2小时的条目

先搞定定位异常问题

你用的following::el-table-column//span[@class='date']定位不到元素,核心原因是**el-table-column是Element UI的组件虚拟标签**,实际渲染到浏览器DOM里会被转换成<td>、<div>这类普通HTML元素,直接用它写xpath肯定找不到。

修复定位的几种可行方案:

  • 直接定位所有带date类的span://span[@class='date']
  • 结合表格容器缩小范围,避免页面其他地方的date元素干扰://div[@class='el-table-box']//span[@class='date']
  • 通过表格行关联定位://table[contains(@class, 'el-table')]//tr//span[@class='date']

另外必须注意:要等表格完全加载再去定位元素,比如用自动化工具的显式等待,避免因元素未渲染完成导致的异常。

筛选最近2小时条目的实现步骤

以Python+Selenium为例,核心逻辑是提取时间、转成可计算的时间对象、对比筛选:

  1. 等待元素加载:用显式等待确保所有时间元素都已渲染
  2. 计算时间阈值:算出当前时间往前推2小时的时间点
  3. 遍历并筛选:提取每个条目的时间,和阈值对比,收集符合条件的条目
  4. 获取关联信息:如果需要代码、标题等其他字段,通过时间元素向上定位到表格行,再提取对应内容

示例代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from datetime import datetime, timedelta

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("你的目标页面URL")

# 等待表格时间元素加载完成,最长等10秒
wait = WebDriverWait(driver, 10)
date_elements = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='el-table-box']//span[@class='date']")))

# 计算2小时前的时间阈值
two_hours_before = datetime.now() - timedelta(hours=2)

# 筛选最近2小时的条目
recent_entries = []
for elem in date_elements:
    time_text = elem.text.strip()
    # 解析页面时间,格式要和页面显示的完全一致(这里是yyyy-MM-dd HH:mm)
    try:
        entry_time = datetime.strptime(time_text, "%Y-%m-%d %H:%M")
    except ValueError:
        # 跳过格式异常的时间
        continue
    if entry_time >= two_hours_before:
        # 定位到当前条目所在的表格行
        row = elem.find_element(By.XPATH, "./ancestor::tr")
        # 提取代码、简称、标题等信息
        stock_code = row.find_element(By.XPATH, ".//span[@class='code']").text
        title = row.find_element(By.XPATH, ".//a[contains(@href, 'disclosure')]").text
        recent_entries.append({
            "股票代码": stock_code,
            "公告标题": title,
            "发布时间": time_text
        })

# 输出结果
for entry in recent_entries:
    print(entry)

driver.quit()

额外注意事项

  • 如果表格有分页,需要循环遍历每一页,直到遇到时间早于2小时的条目为止(或者遍历完所有页)
  • 时间解析的格式要严格匹配页面上的显示,比如如果页面是MM/dd/yyyy HH:mm,就要对应修改strptime的格式参数
  • 不同自动化工具(比如Playwright、Cypress)的语法略有不同,但核心逻辑一致:等待加载→提取时间→对比筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:57:45