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

Selenium爬取NettiAuto下拉菜单:品牌正常获取但车型无法获取

解决Nettiauto品牌与车型爬取问题

问题背景

要爬取https://www.nettiauto.com/网站的所有品牌(make)与车型(model)列表,现有Selenium代码可正常获取品牌信息,但无法获取对应车型数据——选择品牌后,车型下拉菜单的选项未正确加载。

核心问题

原代码仅等待车型下拉框存在,但车型选项是品牌选择后通过异步请求动态加载的,未等待选项加载完成就直接获取,导致拿到的还是初始默认选项。

修复后的代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.nettiauto.com/")

wait = WebDriverWait(driver, 10)
# 等待品牌下拉框可交互
merkki_dropdown = wait.until(EC.element_to_be_clickable((By.XPATH, '//select[@name="make"]')))
select_merkki = Select(merkki_dropdown)

# 提前缓存有效品牌选项,避免循环中DOM变化引发异常
brand_options = [opt for opt in select_merkki.options if opt.text.strip() and "Select" not in opt.text.strip()]

for merkki_option in brand_options:
    merkki_name = merkki_option.text.strip()
    
    # 选择当前品牌
    select_merkki.select_by_visible_text(merkki_name)
    
    # 等待车型下拉框可交互,再等待有效车型选项加载完成
    model_dropdown = wait.until(EC.element_to_be_clickable((By.XPATH, '//select[@name="model"]')))
    wait.until(lambda d: len(d.find_elements(By.XPATH, '//select[@name="model"]/option[text()!="" and not(contains(text(),"Select"))]')) > 0)
    
    # 获取最新的车型选项列表
    select_model = Select(model_dropdown)
    model_list = [opt.text.strip() for opt in select_model.options if opt.text.strip() and "Select" not in opt.text.strip()]
    
    print(f'Make: {merkki_name}')
    for model in model_list:
        print(f'  Model: {model}')

driver.quit()

关键修改点

  • 将品牌下拉框的等待条件改为element_to_be_clickable,确保交互有效性
  • 提前缓存品牌选项,避免循环中DOM更新导致的元素失效异常
  • 新增车型选项加载等待逻辑:通过lambda表达式判断有效车型选项是否出现,确保异步加载完成
  • 重新实例化车型下拉框的Select对象,保证获取最新的选项集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:17:41