Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 семестр / Лабораторные работы / Задание_1 лаб раб

.docx
Скачиваний:
0
Добавлен:
26.09.2026
Размер:
26 Кб
Скачать
☆

Практическое задание № 1: Selenium

Требования к выбору сайта

Самостоятельно выбрать сайт для парсинга, удовлетворяющий следующим критериям:

Обязательные требования:

  1. Динамический контент — сайт должен использовать JavaScript для подгрузки данных (это может быть бесконечный скролл, кнопка "Загрузить ещё", табы, выпадающие меню или данные, появляющиеся после клика).

  2. Наличие структурированных данных — на сайте должны быть данные, которые можно представить в табличном виде (не менее 20-30 элементов). Примеры:

    • Товары в интернет-магазине (название, цена, рейтинг)

    • Вакансии (название, компания, зарплата, город)

    • Фильмы/сериалы (название, год, рейтинг, жанр)

    • Рецепты (название, время приготовления, ингредиенты)

    • Новостные статьи (заголовок, дата, краткое описание)

  3. Наличие форм взаимодействия — сайт должен содержать хотя бы один из элементов:

    • Форма поиска/фильтрации

    • Выпадающие списки (select)

    • Чекбоксы или радиокнопки

    • Кнопки пагинации

    • Табы с переключением контента

  4. Доступность без авторизации — сайт должен быть доступен без регистрации (или с простой регистрацией, которую можно автоматизировать).

Запрещённые сайты (слишком простые или проблемные):

  • Тестовые страницы для обучения (techbeamers, demoqa и т.п.)

  • Сайты с явным запретом на парсинг в robots.txt

  • Сайты, требующие сложную капчу

  • Сайты, где данные защищены и требуют сложной авторизации

Категория

Примеры

Сложность

Интернет-магазины

Ozon, Wildberries, Lamoda, Citilink

Средняя

Доски объявлений

Avito, Юла, Auto.ru

Высокая

Кино/Сериалы

Кинопоиск, IMDb (русская версия), Film.ru

Средняя

Рецепты

Едимдома, Povarenok, Gastronom

Низкая

Новости

Lenta, RIA, TASS (лента новостей)

Низкая

Образование

Stepik, Coursera (списки курсов)

Средняя

Рекомендации по выбору:

Важно: перед началом работы убедитесь, что сайт не блокирует автоматизированные запросы. Проверьте robots.txt (например, https://example.com/robots.txt).

Задачи для выполнения

Задача 1. Анализ структуры сайта (обязательно)

  1. Изучите выбранный сайт с помощью инструментов разработчика (F12).

  2. Определите:

    • Какие данные вы будете собирать (составьте список полей)

    • Как загружаются данные (при загрузке страницы, по клику, при скролле)

    • Какие элементы нужно найти (ID, классы, CSS-селекторы)

  3. Составьте план автоматизации.

Задача 2. Базовая настройка и подключение

Реализуйте:

  • Установку необходимых библиотек через pip

  • Импорт всех нужных модулей

  • Настройку драйвера с опциями (headless-режим для финальной версии)

  • Открытие сайта и проверку загрузки

Задача 3. Поиск и взаимодействие с элементами

Реализуйте минимум три различных типа взаимодействия:

Тип взаимодействия

Примеры

Ввод текста

Поисковый запрос, фильтр по цене

Клик

Кнопка "Показать ещё", "Применить фильтр"

Выпадающий список

Сортировка, выбор категории

Чекбокс

Фильтр по наличию, по брендам

Радиокнопка

Выбор способа доставки

Табы

Переключение между разделами

Скролл

Бесконечная лента, подгрузка товаров

Задача 4. Сбор структурированных данных

Реализуйте сбор данных в список словарей. Пример структуры:

data = [

{

'title': 'Название товара 1',

'price': '1 299 ₽',

'rating': '4.5',

'url': 'https://example.com/product/1'

},

# ... ещё записи

]

Требования:

  • Собрать не менее 30 записей

  • Каждая запись должна содержать минимум 3 поля

  • Данные должны быть извлечены из HTML (текст, ссылки, атрибуты)

Задача 5. Использование явных ожиданий

Запрещено использовать time.sleep() для ожидания загрузки. Вместо этого:

  • Используйте WebDriverWait для всех ключевых элементов

  • Примените минимум 3 разных условия ожидания:

    • presence_of_element_located — элемент появился в DOM

    • visibility_of_element_located — элемент видим

    • element_to_be_clickable — элемент готов к клику

    • text_to_be_present_in_element — появился нужный текст

    • invisibility_of_element — элемент исчез (индикатор загрузки)

Задача 6. Обработка ошибок

Реализуйте:

  • Контекстный менеджер или try-finally для гарантированного закрытия браузера

  • Обработку основных исключений:

    • NoSuchElementException

    • TimeoutException

    • ElementClickInterceptedException

  • Повторные попытки при временных ошибках (до 3 раз)

  • Сохранение скриншота при возникновении ошибки

Задача 7. Сохранение результатов

Сохраните собранные данные в двух форматах:

  1. CSV — с разделителем «;» и кодировкой UTF-8

  2. JSON — с отступами для читаемости

Имя файла должно включать дату и время сбора: data_имясайта_20260227_153022.csv

Задача 8. Анализ и отчёт

Проведите простой анализ собранных данных с помощью pandas:

  • Общее количество записей

  • Количество уникальных значений в каждом поле

  • Минимальные/максимальные значения (если применимо)

  • Топ-10 самых частых значений

  • Постройте хотя бы одну визуализацию (matplotlib или seaborn)

Shape1

Дополнительные задания (для оценки "отлично")

Выберите одно из дополнительных заданий:

Вариант А. Пагинация и бесконечный скролл

Реализуйте сбор данных со всех страниц (или до 100 записей), переходя по ссылкам "Далее" или прокручивая до конца.

Вариант Б. Работа с несколькими разделами

Соберите данные из двух разных разделов сайта и объедините их (например, товары из двух категорий).

Вариант В. Сохранение в базу данных

Сохраните результаты в SQLite или PostgreSQL с созданием соответствующей таблицы.

Вариант Г. Параллельный сбор

Реализуйте сбор данных в 2-3 потоках для ускорения.

Вариант Д. Мониторинг изменений

Реализуйте функцию, которая сравнивает новые данные с предыдущей версией и выводит список изменений.

Требования к отчёту

Оформите отчёт в формате Jupyter Notebook (.ipynb) со следующей структурой:

1. Титульный лист

  • Название работы

  • ФИО студента

  • Группа

  • Дата

2. Выбор сайта и обоснование

  • URL сайта

  • Почему выбран именно этот сайт

  • Скриншот сайта

  • Анализ robots.txt (есть ли ограничения)

  • Какие данные планируется собирать (таблица с описанием полей)

3. План автоматизации

  • Описание структуры сайта

  • Какие элементы будут найдены и как

  • Какие действия будет выполнять программа

  • Схема или блок-схема алгоритма

4. Код программы

  • Весь код с подробными комментариями

  • Код должен быть разбит на логические блоки

  • Каждая функция должна иметь docstring

5. Результаты работы

  • Вывод программы (первые 5-10 записей)

  • Статистика по собранным данным

  • Скриншоты работающей программы (можно несколько)

  • Сохранённые файлы (приложить к отчёту)

6. Анализ и визуализация

  • Таблицы с результатами анализа

  • Графики (гистограммы, круговые диаграммы)

  • Выводы по собранным данным

7. Проблемы и их решение

  • С какими трудностями столкнулись

  • Как их решили

  • Что не удалось реализовать и почему

8. Выводы

  • Чему научились

  • Что можно улучшить

  • Оценка сложности работы

Формат сдачи

  • Файл с отчётом: Фамилия_ИО_группа_лабораторная5.ipynb

  • Файлы с данными: data_*.csv, data_*.json

  • Архив с дополнительными материалами (скриншоты)

Соседние файлы в папке Лабораторные работы
  • #
  • #
  • #
    26.09.202636 Кб0Задание_3 лаб раб + лекция.ipynb
  • #
    26.09.2026510 Кб0Лабораторная работа №1_Ягудин Р_М092501(70).ipynb
  • #
    26.09.2026777 Кб0Лабораторная работа №2_Ягудин Р_М092501(70).ipynb
  • #
    26.09.202635 Кб0Лабораторная работа №3_Ягудин Р_М092501(70).ipynb