Я ранее регулярно рассказывал как работать с веб-архивами и про инструменты которые мы создаём для работы с ними. За пару отпускных дней удалось вернуться к давним планам по улучшению инструментов по работе с ними и пора рассказать о развитии инструмента metawarc [1].
Metawarc - это утилита командной строки созданная изначально для задач цифрового дознания, сбора данных из архивов веб- сайтов. Я лично активно её применял в задачах исследований/расследований, вроде "Государство как пират" [2] о том как косвенные следы пиратского ПО находятся в документах на сайтах госорганов.
Эта утилита работает с WARC файлами, слепками веб-сайтов которые умеют создавать такие инструменты как wget, wpull, Heritrix и другие краулеры веб-сайтов из так называемой экосистемы WARC.
Изначальные функции инструмента были в том чтобы заглянуть в содержание WARC файла, перебрать каждую запись, найти попадающие под типы офисных документов и из каждого офисного документа (.doc, .docx, .xls и других) извлечь кто его создал, какая компания, когда и тд. Задача которая относится скорее к цифровому дознанию чем к цифровой архивации. Цифровое дознание (digital forensic) - это, в принципе, одно из применений веб-архивов и цифровых архивов в принципе.
Но кроме цифрового дознания есть много других областей в которых нужна обработка WARC файлов. Например, извлечение данных определенного типа, вроде файлов Excel или извлечение содержания веб-страниц для последующего полнотекстового индексирования или анализ полноты загруженных файлов и упрощение их обработки.
Поэтому утилиту я, наконец-то, обновил изменив команду index, теперь она не генерирует JSON файл с метаданными, а создает базу SQLite куда эти метаданные кладет. Это не метаданные внутри офисных файлов, но метаданные HTTP запросов и параметров записей в WARC. Их использование сильно ускоряет другие задачи, например, это новые команды поддерживаемые metawrc - dump, stats, list, export
Команда stats выводит статистику по числу записей в WARC файле в разрезе расширений файлов или типов контента (mime)
Команда list позволяет листать записи в WARC файле передавая в качестве параметров список расширений, список типов контента или запрос к SQLite базе данных (кусок SQL запроса после WHERE).
Команда dump работает как list, но для сохранения выбранный файлов в отдельную папку. Поскольку не все файлы в WARC можно сохранять с полным путем, то файлы сохраняются каждый с уникальным идентификатором и к ним прилагается список файлов с соответствием каждого файла ссылке в WARC файле.
Команда export позволяет выгружать содержимое WARC файла в машиночитаемом виде. Она даёт возможности экспортировать заголовки из WARC файла в формате JSON lines и содержимое HTML страниц для полнотекстового индексирования, например, с помощью Opensearch, Elastic или Meilisearch.
Инструмент будет полезен всем кто изучает веб сайты, работает с архивами в формате WARC и создает их. Желающие могут воспользоваться, к примеру, архивами сайтов Мемориала [3] или архивами сайтов Роснано [4] которые мы сохраняли в @ruarxive в 2021 году.
Ошибки, идеи и предложения пишите в Issues на github [5]
Ссылки:
[1] https://github.com/datacoon/metawarc
[2] https://begtin.tech/government-piracy/
[3] cdn.ruarxive.org/public/…rial2021
[4] cdn.ruarxive.org/public/…nano2021
[5] https://github.com/datacoon/metawarc/issues
#opensource #webarchives #digitalpreservation #opendata
metawarc: a command-line tool for metadata extraction from files from WARC (Web ARChive) - GitHub - datacoon/metawarc: metawarc: a command-line tool for metadata extraction from files from WARC (We...