В прошлой статье мы разобрали важную мысль: парсер нужен не ради таблицы. Он нужен, чтобы закрывать рабочий вопрос.
Но сразу после этого появляется следующий вопрос: а какие данные вообще можно собирать с помощью парсинга?
На него часто отвечают слишком технически: текст, ссылки, числа, картинки. Формально это верно, но для бизнеса такой ответ мало что дает. Важно не то, как данные называются внутри страницы. Важно, какую роль они потом играют в работе.
Парсинг полезен там, где информация уже есть в доступном источнике, но вручную ее долго собирать, проверять и обновлять. При этом хороший результат начинается не с фразы "соберите все", а с понимания, какие данные помогут увидеть ситуацию точнее.
Первый тип данных отвечает на простой вопрос: о чем вообще идет речь.
Это может быть название, идентификатор, раздел, адрес страницы, номер записи, источник, автор, организация, категория или другое поле, по которому можно отличить один объект от другого.
Без таких данных вся выгрузка быстро превращается в набор строк. Вроде информация есть, но непонятно, к чему она относится.
Поэтому в любом парсинге важно собрать не только само значение, но и опорные поля. Они помогают не потерять связь с исходным источником.
Второй слой — описание.
Это тексты, пояснения, условия, характеристики, комментарии, примечания, дополнительные блоки и другие сведения, которые помогают понять суть объекта.
Такие данные редко бывают идеально аккуратными. На одной странице они могут быть короткими, на другой — длинными, на третьей — разбитыми на несколько блоков.
Поэтому задача парсинга не всегда сводится к копированию текста. Иногда данные нужно очистить, разделить, привести к одному виду и убрать лишнее.
Иначе человек снова получает не рабочий материал, а сырье, которое придется разбирать вручную.
Отдельно стоит выделить данные о текущем состоянии.
Это могут быть статусы, отметки, условия, доступность, активность, ограничения, признаки изменения, наличие нужного блока или отсутствие важного поля.
На первый взгляд такие данные выглядят мелочью. Но часто именно они помогают быстро понять, что требует внимания.
Например, не обязательно каждый раз читать всю страницу. Иногда достаточно увидеть, что изменился статус, исчез нужный блок или появилось новое условие.
То есть парсер может собирать не только содержание, но и сигналы.
Разовый сбор отвечает на вопрос: что есть сейчас.
Регулярный сбор отвечает на другой вопрос: что изменилось.
И это уже совсем другая ценность. Можно видеть, когда появилась новая запись, когда изменился текст, когда обновился статус, когда исчезла страница или поменялась структура.
Для этого важно сохранять дату сбора и историю. Без истории данные показывают только один снимок. С историей они начинают показывать движение.
Именно поэтому в некоторых задачах важна не сама строка, а разница между вчера и сегодня.
На странице редко бывает только один элемент. Обычно есть связи: разделы, вложенность, переходы, ссылки, связанные материалы, документы, повторяющиеся блоки.
Парсер может собирать эти связи и сохранять структуру.
Это важно, когда нужно не просто получить список, а понять, как все устроено. Что к чему относится. Где находится источник. Через какой раздел он найден. Какие элементы повторяются. Какие страницы ведут друг к другу.
Иногда именно связи помогают увидеть картину, которую невозможно понять по отдельным строкам.
У хорошей выгрузки всегда должен быть след.
Недостаточно сохранить значение. Нужно понимать, откуда оно взято: ссылка, дата сбора, страница, раздел, путь, исходный файл или другой признак источника.
Это нужно не для красоты. Это нужно для проверки.
Если по данным принимают решение, человек должен иметь возможность вернуться к первоисточнику и понять, почему в отчете появилось именно такое значение.
Без этого доверие к автоматическому сбору быстро падает.
Теоретически можно попытаться забрать все, что доступно. Практически это почти всегда плохой путь.
Во-первых, в источнике много лишнего. Навигация, повторы, служебные блоки, рекламные элементы, одинаковые подписи, технические части страницы.
Во-вторых, разные данные имеют разную ценность. Одни нужны для решения задачи. Другие только увеличивают объем файла и мешают работать.
В-третьих, часть информации может быть нестабильной. Сегодня поле есть, завтра оно называется иначе, послезавтра появляется в другом месте.
Поэтому правильнее идти не от максимального сбора, а от полезного состава данных.
Перед парсингом полезно ответить на несколько простых вопросов.
Какие данные должны быть в результате?Нужно заранее определить обязательные поля, без которых выгрузка не имеет смысла.
Как эти данные будут использоваться?Для просмотра, проверки, сравнения, загрузки в систему, отчета или дальнейшей обработки.
Нужно ли хранить историю?Если важны изменения, одного текущего среза будет мало.
Нужно ли сохранять ссылку на источник?Чаще всего да, потому что данные нужно проверять.
Что делать, если поле отсутствует?Оставлять пустым, помечать отдельно или исключать такую строку.
В каком формате нужен результат?Таблица, файл, база, отчет или передача в другую систему.
Как часто данные должны обновляться?Разово, по запросу, регулярно или при изменениях.
Большая выгрузка не всегда лучше маленькой.
Можно собрать много полей и получить файл, с которым неудобно работать. А можно собрать меньше, но ровно то, что помогает быстро понять ситуацию.
В парсинге качество часто определяется не количеством данных, а тем, насколько правильно они разложены.
Хорошие данные отвечают на вопросы: что это, откуда взято, когда собрано, к чему относится, что изменилось и что с этим делать дальше.
Если этих ответов нет, даже большая выгрузка остается просто набором строк.
С помощью парсинга можно собирать не только отдельные значения со страниц. Можно собирать описания, статусы, признаки, связи, историю изменений и подтверждение источника.
Но главный вопрос не в том, сколько всего можно забрать.
Главный вопрос — какие данные помогут принять решение, проверить гипотезу, обновить процесс или убрать ручную работу.
Когда состав данных выбран правильно, парсинг перестает быть технической выгрузкой. Он становится способом превратить разрозненную информацию в понятный рабочий материал.