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

Python自动化脚本异常处理:无搜索结果时如何实现重试跳转?

解决方案

你的问题出在当前的try-except逻辑仅处理了第一个元素查找失败的情况,若第二个元素也找不到,会直接抛出NoSuchElementException,导致后续get_attribute调用时因BCell未被正确赋值而报错。要实现两次查找都失败时自动跳转到下一条数据,需要调整异常捕获逻辑:

  1. 先导入Selenium的具体异常类(避免使用裸except,提升代码健壮性):
from selenium.common.exceptions import NoSuchElementException
  1. 重构查找元素的逻辑,在外层添加异常捕获,处理两次查找都失败的场景:
BCell = None
try:
    # 尝试第一种链接格式
    BCell = driver.find_element(By.XPATH, '//a[contains(@href, "/documents/business.html?fileNumber=")]')
except NoSuchElementException:
    try:
        # 第一种失败后,尝试第二种链接格式
        BCell = driver.find_element(By.XPATH, '//a[contains(@href, "/documents/trade.html?fileNumber=")]')
    except NoSuchElementException:
        # 两种格式都找不到,自增行号并跳过当前数据
        X += 1
        ABName = sheet.cell(X, 2).value
        # 假设代码在循环内,用continue跳过当前迭代
        continue

# 仅当找到元素时,执行后续操作
if BCell:
    link = BCell.get_attribute('href')
    # 后续的页面抓取逻辑...
  1. 核心说明:
  • 初始化BCell = None,避免变量未赋值时调用方法报错
  • 嵌套try-except分别捕获两次查找的异常,确保两次失败时能触发行号自增
  • 添加if BCell:判断,保证只有找到有效元素后才执行get_attribute及后续操作

这样就能在两次查找都失败时,自动切换到下一行数据,彻底避免因元素不存在导致的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:11:09