Одна из основных проблем может заключаться в том, что ваш код ищет меню до его полной загрузки. Вы можете использовать WebDriverWait
и EC
, чтобы удерживать код, пока элемент не будет загружен, а затем продолжить. Неважно, как вы найдете элемент, я использовал xpath, но вы можете делать все, что захотите. Как только вы его получите, метод .text
вернет все, что вам нужно.
Я разделил текст на новую строку и удалил все, чего нет в наличии, а также первый элемент в списке, который называется «Пожалуйста, выберите».
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.asos.com/nike/nike-air-max-95-logo-leather-trainers-in-dark-navy-orange/prd/20750072?colourwayid=60085113")
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="main-size-select-0"]')))
dd = driver.find_element_by_xpath( '//*[@id="main-size-select-0"]')
[x for x in dd.text.split('\n') if not any(w in x for w in ['Please','Not'])]
Вывод
['UK 6',
'UK 7',
'UK 7.5',
'UK 8',
'UK 8.5',
'UK 9',
'UK 9.5',
'UK 10',
'UK 10.5',
'UK 11',
'UK 12',
'UK 13']