ЛР / ЛР№9_Хакова_Ю_М_ИСТ_223
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Лабораторная работа №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
