Файл: Кафедра Интеллектуальных Кибернетических Систем лабораторная работа 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Алгоритм парсинга
Разработка парсера Рис. 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
-
Для начала получаем массив ссылок на каждого игрока с главной страницы. -
Далее поочередно открываем каждую ссылку и собирая нужные данные формируем case class для каждого игрока. -
Преобразуем case class в json файл и сохраняем в директории.
Разработка парсера Рис. 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