Главная страница
Навигация по странице:

  • Обнинский институт атомной энергетики

  • Источник данных

  • Формат выходных данных ( Json )

  • Запросы к базе данных db . players . find ( { team : "

  • " Barcelona

  • Выгрузка данных в базу MongoDB

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


    Скачать 0.69 Mb.
    НазваниеКафедра Интеллектуальных Кибернетических Систем лабораторная работа 24 По предмету "Нереляционные базы данных" студент Группы исб19з Каюмов Р. И. Обнинск, 2023 Задание исследование
    Дата28.04.2023
    Размер0.69 Mb.
    Формат файлаdocx
    Имя файлаЛР№2_ИС_Б19з.docx
    ТипИсследование
    #1095588

    Федеральное агентство по образованию

    Федеральное государственное бюджетное образовательное

    Учреждение высшего профессионального образования

    Национальный исследовательский ядерный университет «МИФИ»

    Обнинский институт атомной энергетики

    Кафедра Интеллектуальных Кибернетических Систем

    Лабораторная работа №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


    написать администратору сайта