from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from webdriver_manager.chrome import ChromeDriverManager # Инициализация драйвера driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) # URL страницы каталога ноутбуков url = 'https://www.citilink.ru/catalog/noutbuki/?ref=mainpage' # Переход на страницу driver.get(url) # Определение характеристик для поиска target_specs = ["Экран", "Процессор", "Графический процессор", "Оперативная память", "Диск", "Операционная система"] try: # Ожидание загрузки блоков с ноутбуками WebDriverWait(driver, 10).until( EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'div.app-catalog-1o4umte.ec53oil0')) ) # Поиск блоков с ноутбуками laptop_blocks = driver.find_elements(By.CSS_SELECTOR, 'div.app-catalog-1o4umte.ec53oil0') # Список для сохранения всех характеристик ноутбуков all_laptops_specs = [] # Цикл по каждому блоку ноутбука for laptop in laptop_blocks: specs = {} # Получение всех характеристик ноутбука spec_items = laptop.find_elements(By.CSS_SELECTOR, 'li.app-catalog-12y5psc.e4qu3682') # Поиск и сохранение целевых характеристик for item in spec_items: label_elem = item.find_element(By.CSS_SELECTOR, 'span') label = label_elem.text.strip() value = item.text.replace(label, '').strip() # Сохраняем только целевые характеристики if label in target_specs: specs[label] = value # Добавляем характеристики ноутбука в общий список if specs: all_laptops_specs.append(specs) # Вывод информации обо всех ноутбуках for i, specs in enumerate(all_laptops_specs, 1): print(f'Ноутбук {i}: {specs}') finally: # Закрытие драйвера driver.quit()