Файл: Кафедра Интеллектуальных Кибернетических Систем лабораторная работа 24 По предмету "Нереляционные базы данных" студент Группы исб19з Каюмов Р. И. Обнинск, 2023 Задание исследование.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.12.2023
Просмотров: 21
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Федеральное агентство по образованию
Федеральное государственное бюджетное образовательное
Учреждение высшего профессионального образования
Национальный исследовательский ядерный университет «МИФИ»
Обнинский институт атомной энергетики
Кафедра Интеллектуальных Кибернетических Систем
Лабораторная работа №2-4
По предмету “Нереляционные базы данных”
Выполнил: студент
Группы ИС-Б19з
Каюмов Р.И.
Обнинск, 2023
Задание: Исследование и валидация данных игроков в футбол для дальнейшего их парсинга и выгрузку в MongoDB.
Источник данных https://www.fctables.com/top_football_players/
Рис. 1 Источник данных (веб-сайт)
Структура данных
В качестве полей для структуры данных были выбраны следующие значения:
Имя игрока – String
Команда – String
Номер игрока – Int
Позиция игрока – String
День рождения – String
Национальность - String
Алгоритм парсинга
-
Для начала получаем массив ссылок на каждого игрока с главной страницы. -
Далее поочередно открываем каждую ссылку и собирая нужные данные формируем case class для каждого игрока. -
Преобразуем case class в json файл и сохраняем в директории.
Формат выходных данных (Json)
Ниже представлен скриншот показывающий структуру данных в виде json
Рис. 2 JSON структура
Запросы к базе данных
db.players.find( {team: "Barcelona"} ) - запрос на получение всех игроков из команды Барселона.
db.players.find($and: {team: "Barcelona"}, {position: Forward} ) – запрос с двумя условиями
db.players.stats() – возвращает статистику по коллекции
Разработка парсера
Рис. 3 Класс парсера
На рисунке 3 представлен кейс-класс для структуры данных и класс парсера для получения данных с веб страницы.
В начале определяется экземпляр объекта JsoupBrowser для работы с браузером и URL. В функции getPlayersLinks мы получаем лист ссылок на каждого из игроков, далее в функции getPlayers, мы проходимся по ссылкам из листа полученного из прошлой функции, собираем лист из игроков, вытаскивая значения из определенных тегов.
Последние две функции используются для конвертации экземпляров кейс классов в JSON и созданию файлов в каталоге resources.
Выгрузка данных в базу MongoDB
Рис. 4 Программа для выгрузки данных в MongoDB
На рисунке 4 представлен основной объект программы.
В нем мы создаем экземпляр класса Parser и вызываем поочередно все методы для генерации и подготовки данных. Далее создаем кодек для кейс-класса и определяем экземпляр клиента базы данных и получаем из него саму базу и коллекцию.
В функции readJsonFiles читаем все файлы из директории и получаем массив из json строк, далее с помощью библиотеки Circe декодируем строки в кейс-классы. Поскольку декодер возвращает массив из Either, мы с помощью pattern matching разбираем их. Используя функцию insertMany добавляем данные в базу.
Рис. 5 Отображение данных в программе MongoDB Compass
Ссылка на исходный код проекта:
https://gitlab.com/aizendev/scala-2022-task2/-/tree/work?ref_type=heads