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

Python Selenium中Try Except使用及多窗口优化问题求助

问题解决方案

1. 单窗口处理所有ASIN

你之前每个ASIN都会打开新窗口,是因为把Firefox驱动的初始化代码写在了ASIN循环内部。把驱动初始化移到循环外面,就能用同一个窗口处理所有请求:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import pandas as pd

# 初始化驱动(只执行一次,放在循环外)
driver = webdriver.Firefox()
driver.implicitly_wait(10)  # 全局隐式等待,避免页面加载慢导致找不到元素

# 替换成你的ASIN列表
asin_list = ["B0XXXXXXX", "B0YYYYYYY", "B0ZZZZZZZ"]
results = []

for asin in asin_list:
    # 后续提取逻辑放在这里

2. 用Try Except跳过空页面/无URL的情况

把提取主图URL的核心逻辑包裹在Try块中,针对性捕获找不到元素、表格为空这类异常,直接跳过无效ASIN:

for asin in asin_list:
    try:
        # 用同一个driver打开当前ASIN的页面
        driver.get(f"你的内部站点URL?asin={asin}")
        
        # 替换成你实际提取URL的代码(示例为通过表格提取图片链接)
        table_row = driver.find_element(By.XPATH, "//table[@id='product-img-table']/tbody/tr")
        img_url = table_row.find_element(By.TAG_NAME, "img").get_attribute("src")
        
        # 额外判断URL是否为空
        if not img_url.strip():
            print(f"ASIN {asin}提取到空URL,跳过")
            continue
            
        results.append({"ASIN": asin, "主图URL": img_url})
        print(f"成功提取ASIN {asin}的URL")
    
    # 捕获找不到元素、索引错误等常见异常
    except (NoSuchElementException, IndexError) as e:
        print(f"ASIN {asin}页面无有效数据,跳过: {str(e)}")
    # 捕获其他意外错误
    except Exception as e:
        print(f"处理ASIN {asin}时出错: {str(e)}")
        continue

# 循环结束后关闭浏览器
driver.quit()

# 保存结果到Excel
df = pd.DataFrame(results)
df.to_excel("亚马逊主图URL结果.xlsx", index=False)

关键修改说明

  • 驱动初始化移到循环外:确保全程只用一个Firefox窗口,避免重复启动浏览器的开销
  • 全局隐式等待:给页面加载留足够时间,减少因加载慢导致的元素找不到问题
  • 针对性捕获异常:精准跳过页面无数据、找不到元素的ASIN
  • 空URL判断:即使找到元素,也确保提取到的URL不是空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:25:18