Файл: Кафедра Интеллектуальных Кибернетических Систем лабораторная работа 24 По предмету "Нереляционные базы данных" студент Группы исб19з Каюмов Р. И. Обнинск, 2023 Задание исследование.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.12.2023

Просмотров: 74

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Федеральное агентство по образованиюФедеральное государственное бюджетное образовательноеУчреждение высшего профессионального образованияНациональный исследовательский ядерный университет «МИФИ»Обнинский институт атомной энергетикиКафедра Интеллектуальных Кибернетических СистемЛабораторная работа №2-4По предмету “Нереляционные базы данных”Выполнил: студентГруппы ИС-Б19зКаюмов Р.И.Обнинск, 2023Задание: Исследование и валидация данных игроков в футбол для дальнейшего их парсинга и выгрузку в MongoDB.Источник данных https://www.fctables.com/top_football_players/Рис. 1 Источник данных (веб-сайт)Структура данныхВ качестве полей для структуры данных были выбраны следующие значения:Имя игрока – StringКоманда – StringНомер игрока – IntПозиция игрока – StringДень рождения – StringНациональность - StringАлгоритм парсинга

  1. Для начала получаем массив ссылок на каждого игрока с главной страницы.

  2. Далее поочередно открываем каждую ссылку и собирая нужные данные формируем case class для каждого игрока.

  3. Преобразуем 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