我想从以下网站获取每个品牌和型号的列表。到目前为止,我有以下内容。它给了我正确的标记,但没有给我模型。我认为问题在于代码没有正确选择模型以使模型通过下拉菜单具有选项。
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.presence_of_element_located((By.XPATH, '//select[@name="make"]')))
select_merkki = Select(merkki_dropdown)
for merkki_option in select_merkki.options:
merkki_name = merkki_option.text.strip()
if merkki_name == "" or "Select" in merkki_name:
continue
select_merkki.select_by_visible_text(merkki_name)
model_dropdown = wait.until(EC.presence_of_element_located((By.XPATH, '//select[@name="model"]')))
model_options = model_dropdown.find_elements(By.TAG_NAME, "option")
model_list = [option.text.strip() for option in model_options if option.text.strip()]
print(f'Make: {merkki_name}')
for model in model_list:
print(f' Model: {model}')
driver.quit()
这是从
<select>
中获取选项的方法:
select_model = Select(model_dropdown)
model_list = [option.text.strip() for option in select_model.options if option.text.strip()]
如果需要,请使用
WebDriverWait
明确等待模型选项更新