Собираем данные с XLS, XLSX и CSV файлов

Собираем данные с XLS, XLSX и CSV файлов

Сегодня в платформу Diggernaut была добавлена поддержка файлов в формате XLS, XLSX и CSV. Схема поддержки реализована в том же формате как и у других поддерживаемых типов файлов. Вы загружаете в диггер файл, используя команду walk, диггер получает файл, определяет его тип и конвертирует его в XML. Далее вы можете ходить по DOM структуре, извлекать нужные данные и формировать свой набор данных.

Рассмотрим на примере, как это работает. Для этого мы поместили 3 файла в нашу песочницу:
https://www.diggernaut.com/sandbox/sample.csv — CSV файл с данными
https://www.diggernaut.com/sandbox/sample.xls — XLS файл с данными (бинарная версия)
https://www.diggernaut.com/sandbox/sample.xlsx — XLSX файл с данными (XML версия)

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

Если мы запустим диггер в редиме отладки, то в логе мы увидим следующий исходный код XML страницы с данными

Так как в CSV только один лист, то элемент sheet в результирующей структуре только один. В XLS/XLSX файлах листов может быть много, и все они будут находиться в соответсвующих элементах sheet. Парсить такую структуру достаточно легко, проходим по листам, затем по строкам row и забираем данные из колонок column. Значения в классах соответствуют номеру строк и столбцов в оригинальном файле.

Давайте теперь посмотрим, как будет сконвертирован XLS ресурс:

Получим следующий исходный код:

Как вы видите, в этом файле мы имеем 2 листа, а в остальном принципиально такую же структуру как и в случае с CSV. Если мы загрузим XLSX, то получим точно такой же результат как и с XLS, поэтому мы опустим этот момент.

Как можно использовать этот функционал, кроме собственно парсинга финальных данных? Как вариант, вы можете использовать таблицы как фид с ресурсами, которые должен забрать ваш парсер. К примеру, вы добавляете список ссылок на товары в магазине в таблицу. Ваш парсер читает таблицу, забирает список URL, кладет их в пул и затем начинает работу основная логика парсера по сбору данных о товарах. Или, представьте, что у вас есть таблица с данными, которые надо дополнить с веба, вы читаете парсером таблицу, проходите строку за строкой и формируете новый датасет, попутно заходя на страницы, скажем, товаров и дополняя данные о товаре. В результирующем датасете у вас будут данные из таблицы и со страницы товара, сведенные в единую запись. Если и другие варианты использования таблиц, но об этом в следующий раз.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *