2 семестр / Лабораторные работы / Задание_1 лаб раб
.docxПрактическое задание № 1: Selenium
Требования к выбору сайта
Самостоятельно выбрать сайт для парсинга, удовлетворяющий следующим критериям:
Обязательные требования:
Динамический контент — сайт должен использовать JavaScript для подгрузки данных (это может быть бесконечный скролл, кнопка "Загрузить ещё", табы, выпадающие меню или данные, появляющиеся после клика).
Наличие структурированных данных — на сайте должны быть данные, которые можно представить в табличном виде (не менее 20-30 элементов). Примеры:
Товары в интернет-магазине (название, цена, рейтинг)
Вакансии (название, компания, зарплата, город)
Фильмы/сериалы (название, год, рейтинг, жанр)
Рецепты (название, время приготовления, ингредиенты)
Новостные статьи (заголовок, дата, краткое описание)
Наличие форм взаимодействия — сайт должен содержать хотя бы один из элементов:
Форма поиска/фильтрации
Выпадающие списки (select)
Чекбоксы или радиокнопки
Кнопки пагинации
Табы с переключением контента
Доступность без авторизации — сайт должен быть доступен без регистрации (или с простой регистрацией, которую можно автоматизировать).
Запрещённые сайты (слишком простые или проблемные):
Тестовые страницы для обучения (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. Анализ структуры сайта (обязательно)
Изучите выбранный сайт с помощью инструментов разработчика (F12).
Определите:
Какие данные вы будете собирать (составьте список полей)
Как загружаются данные (при загрузке страницы, по клику, при скролле)
Какие элементы нужно найти (ID, классы, CSS-селекторы)
Составьте план автоматизации.
Задача 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. Сохранение результатов
Сохраните собранные данные в двух форматах:
CSV — с разделителем «;» и кодировкой UTF-8
JSON — с отступами для читаемости
Имя файла должно включать дату и время сбора: data_имясайта_20260227_153022.csv
Задача 8. Анализ и отчёт
Проведите простой анализ собранных данных с помощью pandas:
Общее количество записей
Количество уникальных значений в каждом поле
Минимальные/максимальные значения (если применимо)
Топ-10 самых частых значений
Постройте хотя бы одну визуализацию (matplotlib или seaborn)
Дополнительные задания (для оценки "отлично")
Выберите одно из дополнительных заданий:
Вариант А. Пагинация и бесконечный скролл
Реализуйте сбор данных со всех страниц (или до 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
Архив с дополнительными материалами (скриншоты)
