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

Python爬虫脚本报错:TensorFlow Lite警告致程序终止及Excel行删除失败

问题分析与解决思路

一、TensorFlow Lite警告导致程序终止

该警告来自Chrome浏览器内置的TensorFlow Lite组件,与脚本逻辑无关,但会触发Chrome进程异常退出。解决方法是在Chrome启动选项中禁用XNNPACK delegate:

在你的Chrome Options配置部分添加以下参数:

options.add_argument("--disable-xnnpack")

完整配置示例:

options = Options()
options.add_argument("user-data-dir=C:/Users/xyzs/AppData/Local/Google/Chrome for Testing/User Data")
options.binary_location = full_path_chrome
# 添加禁用XNNPACK的参数
options.add_argument("--disable-xnnpack")
service = Service(executable_path=full_path_cdriver)
driver = webdriver.Chrome(options=options, service=service)

二、Excel未找到产品行无法删除的问题

代码存在两个关键问题导致行删除失效:

1. product_found变量未初始化

当搜索不到产品时,driver.find_elements(By.CLASS_NAME, "button-2")返回空列表,不会执行product_found = True,此时product_found变量未定义,会抛出NameError导致程序终止,无法执行后续删除逻辑。

修正方法:在循环开始时初始化product_found为False:

for i in range(1,4):
    product_found = False  # 初始化变量
    prod_id = sheet1.cell(row=i+1, column=2).value
    # 后续逻辑不变

2. 正序循环删除行导致索引错乱

删除某一行后,后续行的索引会自动上移,但正序循环会跳过下一行数据。比如删除第2行后,原来的第3行变成第2行,但循环i递增到2,会直接处理原来的第4行,导致遗漏。

修正方法:倒序循环,从最后一行往前处理:

# 替换原来的for循环,处理第2到第4行(对应i从3到1倒序)
for i in range(3, 0, -1):
    product_found = False
    prod_id = sheet1.cell(row=i+1, column=2).value
    # 后续搜索逻辑不变
    
    if not product_found:
        print("No product found")
        sheet1.delete_rows(i+1, 1)  # 行号对应i+1,匹配原循环的row=i+1
        book.save('updated_trial.xlsx')

3. 额外优化点

  • 避免在循环内频繁调用book.save(),可在循环结束后统一保存,减少IO操作
  • 搜索后可添加更可靠的无结果判断,比如检查页面是否包含“无结果”类的元素,而非仅依赖button-2的存在

修正后的完整onescript函数示例

def onescript(driver):
    book = load_workbook('trial.xlsx')
    sheet1 = book.active
    driver.get("https://www.jaquar.com/en/") #Open the web page
    
    # 倒序循环处理行,避免删除后索引错乱
    for i in range(3, 0, -1):
        product_found = False
        prod_id = sheet1.cell(row=i+1, column=2).value
        if not prod_id:
            print("Empty product ID, skipping")
            sheet1.delete_rows(i+1, 1)
            continue

        # 搜索产品
        search_product = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "small-searchterms"))
        )
        search_product.clear()
        search_product.send_keys(prod_id)
        search_product.send_keys(Keys.ENTER)

        # 判断是否找到产品并处理下载
        if driver.find_elements(By.CLASS_NAME, "button-2"):
            click_details = WebDriverWait(driver, 2).until(
                EC.presence_of_element_located((By.CLASS_NAME, "button-2"))
            )
            click_details.click()

            download_image = WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.ID, "download-image"))
            )
            download_image.click()
            product_found = True

        if not product_found:
            print(f"No product found for ID: {prod_id}")
            sheet1.delete_rows(i+1, 1)
    
    # 循环结束后统一保存文件
    book.save('updated_trial.xlsx')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:53:25