Мой Калькулятор стоимости жизни использует данные с Numbeo. Сейчас процесс выгрузки данных крайне примитивный.
- есть несколько скриптов, которые с помощью scrapy парсят сайт и складывают данные в промежуточные текстовые файлы
- ещё пара скриптов берут эти текстовые файлы, как-то обрабатывают и группируют данные и генерят JSON-файлы, которые используются в приложении
- bash-скрипт, который объединяет первые 2 шага
Всё это я запускаю локально (это намеренное решение, чтоб не городить CI/CD инфраструктуру). Деплоится всё отдельным ansible-плейбуком, чтобы разложить JSON в S3-подобное хранилище и обновить версию/URL в джаваскрипте вместе с релизом самого JS. Это тоже осознанное решение, потому что так деплоится мой сайт, а калькулятор — его часть.
Меня всё устраивает. Но дело в том, что на куче скриптов и текстовых файлов без SQL сложно делать нормальные агрегации и обрабатывать данные серьёзнее, чем просто выкинуть пустые поля или лишние символы.
Я вижу следующую итерацию этой системы как простейший ETL-пайплайн, который я также буду запускать локально.
- Extract: один питонячий скрипт, который инициализирует scrapy и сгружает всё в SQLite
- Transform: набор классов или функций, запускаемых в определённом порядке, чтобы применить все нужные обработки и создать агрегированные таблицы и всякие вьюхи
- Load: взять все получившиеся таблички и нагенерировать из них JSON-файлов
Всё это несложно запрограммировать, но мне интересно, есть ли какие-то инструменты для таких задач. Что-то типа конфигурируемого комбайна, который уже умеет парсить, складывать данные в БД, обрабатывать и писать JSON, а ты ему только реализацию каждого шага подсовывай.
Поделитесь опытом в комментариях.