Файл: Кафедра Интеллектуальных Кибернетических Систем лабораторная работа 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

Алгоритм парсинга

  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