Giter Club home page Giter Club logo

rss_news_analysis's Introduction

Анализ публикуемых новостей

Описание

Проект предназначен для агрегации и подсчета статистик новостей из RSS рассылок. Обновление информации производится один раз в сутки.

На текущий момент реализована одна витрина данных с отображением следующей информации:

  • Суррогатный ключ категории;
  • Название категории;
  • Общее количество новостей из всех источников по данной категории за все время;
  • Количество новостей данной категории для каждого из источников за все время;
  • Общее количество новостей из всех источников по данной категории за последние сутки;
  • Количество новостей данной категории для каждого из источников за последние сутки;
  • Среднее количество публикаций по данной категории в сутки;
  • День, в который было сделано максимальное количество публикаций по данной категории;
  • Количество публикаций новостей данной категории по дням недели.

Пример заполненной витрины данных

data_mart_category.png

Блок-схема структуры проекта scheme.png

В качестве оркестратора используется Airflow. Внешний вид DAG:

dag.png

ER-диаграмма (приведена для трех источников новостей) ERD.png

Установка

Для запуска проекта необходимо установить docker и docker-compose.

Загрузка и настройка проекта:

git clone https://github.com/DenisN03/RSS_News_Analysis.git
cd rss_news_analysis
mkdir ./airflow/files/
mkdir ./airflow/logs/
sudo chmod u=rwx,g=rwx,o=rwx ./airflow/files/

Запуск проекта:

docker-compose up -d

Настройка Airflow

Для корректной работы проекта требуется настроить соединение с БД и добавить словарь с источниками RSS данных.

Графический интерфейс Airflow доступен по адресу:

http://localhost:8080/

Данные для подключения:

Параметр Значение
user airflow
password airflow

Настройка соединения с БД

В качестве БД используется PostgreSQL. Данные для подключения:

Параметр Значение
user admin
password admin
db news

В графическом интерфейсе Airflow в разделе Connections необходимо добавить соединение:

Параметр Значение
Connection Id postgre_conn
Connection Type Postgres
Host host.docker.internal
Schema news
Login admin
Password admin
Port 5430

В разделе Variables необходимо добавить переменную:

Параметр Значение
Key conn_id
Val postgre_conn

Добавление словаря с источниками RSS данных

В разделе Variables необходимо добавить переменную:

Параметр Значение
Key urls_dict
Val {"lenta": "https://lenta.ru/rss/", "vedomosti":"https://www.vedomosti.ru/rss/news", "tass":"https://tass.ru/rss/v2.xml"
Description Dictionary of urls

Для добавления новых источников необходимо добавить их в указанную выше переменную. Для удаления источников необходимо убрать их из переменной. Все Task Airflow будут добавлены/удалены автоматически.

Подключение к БД через GUI

Для работы с БД через графический интерфейс в проекте установлен pgAdmin. Он доступен по адресу: Графический интерфейс Airflow доступен по адресу:

http://localhost:5050/

Данные для подключения:

Параметр Значение
password pgadmin

Добавление файлов с RSS данными

Проект поддерживает загрузку и обработку RSS данных из фалов с жесткого диска. Для этого необходимо добавить файлы в директорию ./airflow/files/. Файлы должны именоваться определенным образом:

Имя файла Дата Имя источника Расширение
2022-12-20T07:27:17-tass.xml 2022-12-20T07:27:17 tass xml

Архив с данными можно загрузить из Google Drive.

rss_news_analysis's People

Watchers

Protasov Denis avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.