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

ЛР / ЛР№9_Хакова_Ю_М_ИСТ_223

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

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Лабораторная работа №9

«Веб-скрапинг с помощью пакета rvest»

Вариант 19

Выполнил: ст. гр. ИСТ- 223, Хакова Ю. М.

Проверил: к.т.н., доцент Лабковская Р.Я.

Цель работы: научиться извлекать данные с сайтов с помощью пакета rvest.

Ход работы:

1. Установить и загрузить необходимые библиотеки для парсинга (rvest), обработки данных (dplyr, stringr) и подготовить URL-адрес страницы с нужной информацией. (рис 1)

2. Извлечь нужные данные (название фильма, жанр, продолжительность, рейтинг) с использованием CSS-селекторов и преобразовать данные в удобный формат.

3. Обработать данные.

4. Сохранить извлеченные и обработанные данные в структуру датафрейм.

Р ис. 1. Страница с фильтрами по жанру и году выпуска

Рис. 2. Часть программного кода страницы с информацией о названии фильма

Рис. 3. Часть программного кода страницы с информацией о длительности фильма

Рис. 4. Часть программного кода страницы с информацией о рейтинге фильма

Рис. 5. Код для извлечения данных с сайта и создания датасета

Рис. 6. Датасет с фильмами

2) Для хранения собранных данных, например, из веб-страницы, оптимально использовать следующие типы данных, в зависимости от их структуры и назначения:

Названия фильмов — текстовые строки, которые легко можно хранить в векторе строк. Для этого используется тип character.

Жанры могут быть как строками (например, “Sci-Fi”, “Action”), так и категориальными переменными. Если количество уникальных жанров ограничено и важно, чтобы они воспринимались как категории (для выполнения операций или анализа), лучше использовать тип factor. Если жанры могут быть разнообразными, лучше хранить их как строки с типом character.

Продолжительность фильмов (в минутах) — это числовые данные, и их лучше хранить как numeric. В случае отсутствующей информации (например, если продолжительность фильма не указана), можно использовать NA (отсутствующие значения), который в R является частью числовых типов данных.

Рейтинг фильма является числовым значением (например, “7.6”, “8.0”), поэтому его следует хранить в типе numeric. В случае отсутствующего значения для рейтинга можно также использовать NA.

Для объединения всех этих данных в одну таблицу (с названиями, жанрами, продолжительностью и рейтингами) лучше использовать тип data.frame. Это структура данных, предназначенная для хранения различных типов данных (строки, числа, факторы и т.д.) в виде таблицы. В R датафреймы — это основной способ хранения структурированных данных, таких как таблицы или таблицы с несколькими столбцами.

Подытожим:

Для строковых данных – тип character.

Для категориальных данных – тип factor.

Для числовых данных – тип numeric.

Для всей таблицы данных – data.frame, чтобы объединить эти данные в одну структуру.

3) Вывод:

В ходе работы была реализована процедура парсинга данных с динамической страницы IMDb с фильтрацией по жанру и году выпуска. После извлечения данных необходимо было очистить их от ненужных символов или пробелов. Для этого использовалась функция str_trim() из библиотеки stringr, которая убирает лишние пробелы в начале и конце строк. Для очистки названий фильмов от номеров, расположенных перед ними, применялась функция str_remove("^\\d+\\.\\s*"). Она удаляет все числа и точки, находящиеся перед названиями фильмов, оставляя только текст. Для обработки данных о продолжительности фильмов была использована регулярная обработка строк с помощью str_extract(), чтобы извлечь значения часов и минут. Если значение о продолжительности отсутствовало, то соответствующему фильму присваивалось значение NA. Данные о продолжительности фильмов были преобразованы в минуты.

После обработки данных был создан датафрейм. Для того чтобы в датафрейме не было несоответствий по длине колонок, использовался механизм приведения данных к одинаковой длине с помощью функции min() для определения минимальной длины всех массивов данных, иначе выдавало ошибку при попытке извлечь данные с сайта.

Работа показала важность корректной обработки данных с веб-страниц, а также способности эффективно использовать библиотеки для извлечения информации.

Санкт-Петербург

2024