Ivan Begtin
9.33K subscribers
2.34K photos
4 videos
110 files
5.03K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and etc.

CTO&Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Email [email protected]

Ads/promotion agent: @k0shk
加入频道
В рубрике полезных инструментов для работы с данными, много лет назад я столкнувшись с тем что регулярно надо откуда-то доставать из API датасеты и с тем что каждый раз много мороки писать скрипты самому и ещё дольше просить кого-то из разработчиков это делать, я написал утилиту apibackuper для скрейпинга через декларативное программирование в конфиг файлах.

Изначально она была для архивации данных в рамках Национального цифрового архива @ruarxive, но оказалась очень удобной во всех смыслах. К слову и в Dateno часть сборщиков метаданных работают на базе apibackuper

Как это работает? Точки подключения к API описываются в специальном конфигурационном файле в расширением cfg в формате configparser.

После запуска утилита последовательно делает запросы к API, сохраняет результаты в виде JSON файлов внутри ZIP контейнера и позволяет потом экспортировать результаты в формат построчного JSON (NDJSON).

Кроме простого перебора выгрузки из API, там же есть режим когда после перебора точки подключения с поиском/листанием данных нужно запросить карточку каждого объекта и/или скачать ассоциированные с данными файлы.

Оказалось очень удобным инструментом, сам пользуюсь им регулярно и надо бы его давно обновить, но руки не доходят потому что "и так работает".

Если бы я делал его сейчас то:
1. Использовал бы JSON файлы сжатые ZST вместо ZIP контейнера
2. Вместо конфиг файлов использовал бы YAML (это несложно, кстати)
3. Добавил бы систему расширений
4. Добавил бы многопоточный режим выгрузки
5. Добавил бы библиотеку шаблонов для подключения к разным типовым API.

И тд, но, в целом, и без этого всё работает. На скриншоте пример конфиг файла для выгрузки метаданных и файлов из системы "Артефакт" (ar.culture.ru) Минкультуры РФ и то как эти данные выглядят в самом API.

#opensource #datatools #data #scraping #API #digitalpreservation
142🔥1