2024-10-27 20:49:39 +04:00
|
|
|
|
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()))
|
|
|
|
|
|
2024-10-29 20:17:54 +04:00
|
|
|
|
# URL страницы каталога ноутбуков
|
2024-10-27 20:49:39 +04:00
|
|
|
|
url = 'https://www.citilink.ru/catalog/noutbuki/?ref=mainpage'
|
|
|
|
|
|
|
|
|
|
# Переход на страницу
|
|
|
|
|
driver.get(url)
|
|
|
|
|
|
2024-10-29 20:17:54 +04:00
|
|
|
|
# Определение характеристик для поиска
|
|
|
|
|
target_specs = ["Экран", "Процессор", "Графический процессор", "Оперативная память", "Диск", "Операционная система"]
|
|
|
|
|
|
2024-10-27 20:49:39 +04:00
|
|
|
|
try:
|
2024-10-29 20:17:54 +04:00
|
|
|
|
# Ожидание загрузки блоков с ноутбуками
|
2024-10-27 20:49:39 +04:00
|
|
|
|
WebDriverWait(driver, 10).until(
|
2024-10-29 20:17:54 +04:00
|
|
|
|
EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'div.app-catalog-1o4umte.ec53oil0'))
|
2024-10-27 20:49:39 +04:00
|
|
|
|
)
|
|
|
|
|
|
2024-10-29 20:17:54 +04:00
|
|
|
|
# Поиск блоков с ноутбуками
|
|
|
|
|
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()
|
2024-10-27 20:49:39 +04:00
|
|
|
|
|
2024-10-29 20:17:54 +04:00
|
|
|
|
# Сохраняем только целевые характеристики
|
|
|
|
|
if label in target_specs:
|
|
|
|
|
specs[label] = value
|
2024-10-27 20:49:39 +04:00
|
|
|
|
|
2024-10-29 20:17:54 +04:00
|
|
|
|
# Добавляем характеристики ноутбука в общий список
|
|
|
|
|
if specs:
|
|
|
|
|
all_laptops_specs.append(specs)
|
2024-10-27 20:49:39 +04:00
|
|
|
|
|
2024-10-29 20:17:54 +04:00
|
|
|
|
# Вывод информации обо всех ноутбуках
|
|
|
|
|
for i, specs in enumerate(all_laptops_specs, 1):
|
|
|
|
|
print(f'Ноутбук {i}: {specs}')
|
2024-10-27 20:49:39 +04:00
|
|
|
|
|
|
|
|
|
finally:
|
|
|
|
|
# Закрытие драйвера
|
|
|
|
|
driver.quit()
|