From c3c6a8588e73bcf94ecbc48de1008616c02438e4 Mon Sep 17 00:00:00 2001 From: IsmailovRovshan Date: Tue, 29 Oct 2024 20:17:54 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D1=85=D0=B0=D1=80=D0=B0=D0=BA=D1=82=D0=B5=D1=80=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BA=D0=B8=20(=D0=B2=D1=8B=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scraping/scrapingMain.py | 50 ++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/scraping/scrapingMain.py b/scraping/scrapingMain.py index 8e96265..a6547b0 100644 --- a/scraping/scrapingMain.py +++ b/scraping/scrapingMain.py @@ -8,36 +8,52 @@ from webdriver_manager.chrome import ChromeDriverManager # Инициализация драйвера driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) -# URL страницы товара +# URL страницы каталога ноутбуков url = 'https://www.citilink.ru/catalog/noutbuki/?ref=mainpage' # Переход на страницу driver.get(url) +# Определение характеристик для поиска +target_specs = ["Экран", "Процессор", "Графический процессор", "Оперативная память", "Диск", "Операционная система"] + try: - # Ожидание появления хотя бы одного элемента
  • с указанным классом + # Ожидание загрузки блоков с ноутбуками WebDriverWait(driver, 10).until( - EC.presence_of_element_located((By.CSS_SELECTOR, 'li.app-catalog-12y5psc.e4qu3682')) + EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'div.app-catalog-1o4umte.ec53oil0')) ) - # Поиск всех элементов
  • с указанным классом - all_elements = driver.find_elements(By.CSS_SELECTOR, 'li.app-catalog-12y5psc.e4qu3682') + # Поиск блоков с ноутбуками + laptop_blocks = driver.find_elements(By.CSS_SELECTOR, 'div.app-catalog-1o4umte.ec53oil0') - # Список для хранения информации об оперативной памяти - ram_info_list = [] + # Список для сохранения всех характеристик ноутбуков + all_laptops_specs = [] - # Фильтрация элементов по тексту - for element in all_elements: - span_element = element.find_element(By.TAG_NAME, 'span') # Ищем внутри
  • - if "Оперативная память" in span_element.text: - ram_info_list.append(element.text) # Добавляем текст элемента в список + # Цикл по каждому блоку ноутбука + for laptop in laptop_blocks: + specs = {} - # Вывод информации об оперативной памяти - for ram_info in ram_info_list: - print(f'Информация об оперативной памяти: {ram_info}') + # Получение всех характеристик ноутбука + 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}') -except Exception as e: - print(f'Ошибка: {e}') finally: # Закрытие драйвера driver.quit()