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

使用Pandas与Selenium时,过滤后无法读取目标行的问题求助

问题分析与修正方案

原代码存在的核心问题

  • 遍历对象错误:代码遍历的是未筛选的原始表格planilha,而非筛选后的planilha_filtrada,导致无法仅处理状态为Cadastrado的行。
  • 取值逻辑错误:row[planilha_filtraChassi]的写法不符合pandas行取值规则,无法正确获取底盘号。
  • 资源浪费:每次循环都新建并销毁浏览器实例,效率极低。
  • 无效注释:代码中的**#Chasssi number filter**是Markdown格式,在Python中不生效,需改为普通注释。

修正后的代码

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 读取Excel文件,若xlsm格式读取失败,可添加engine参数(如engine='openpyxl')
planilha = pd.read_excel("REL_COMUNICADO_DE_VENDA.xlsm")
# 筛选状态为Cadastrado的行
planilha_filtrada = planilha[planilha['Situação'] == 'Cadastrado']
# 提取有效底盘号(去除空值并转为列表)
chassis_numbers = planilha_filtrada['Nº Chassi'].dropna().tolist()

# 初始化浏览器(仅执行一次,避免重复创建资源)
navegador = webdriver.Chrome()

for chassis in chassis_numbers:
    navegador.get("http://www.google.com")
    time.sleep(2)
    
    # 定位搜索框并填入底盘号
    search_box = navegador.find_element(By.XPATH, '//*[@id="APjFqb"]')
    search_box.send_keys(chassis)
    time.sleep(2)
    
    # 点击搜索按钮
    navegador.find_element(By.CLASS_NAME,'gNO89b').click()
    time.sleep(2)

# 所有任务完成后关闭浏览器
navegador.quit()

关键优化说明

  1. 筛选逻辑落地:直接基于筛选后的表格提取底盘号,确保只处理目标数据。
  2. 空值处理:通过dropna()过滤空的底盘号,避免无效输入。
  3. 资源优化:浏览器实例仅初始化一次,循环结束后统一关闭,大幅提升运行效率。
  4. 代码可读性:变量名更直观,取值逻辑简化,便于后续维护。

内容的提问来源于stack exchange,提问作者Tiago Ribeiro Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:02:39