# Парсер данных: как проверять результат при изменении источника

Источник: https://quicklanding.ru/knowledge/parser-data-quality/

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

Парсер завершился без ошибки, но у половины товаров цена стала нулевой. Источник поменял разметку, и программа прочитала пустое место вместо цены. Технический запуск состоялся, полезные данные не получены. Контроль качества должен проверять содержание выгрузки до её передачи в каталог или отчёт.

## Начните с эталонных записей

![Команда сверяет данные на ноутбуке](/assets/images/knowledge/parser-data-quality.webp)

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

Опишите значение каждого поля. Цена за штуку и упаковку не взаимозаменяемы. Надпись «по запросу» не равна нулю. Артикул хранится как идентификатор, а не как число для вычислений. Если исходные данные не позволяют определить смысл, отмечайте неопределённость вместо догадки.

## Проверьте, что получена нужная страница

Сервер способен вернуть страницу авторизации, ограничение доступа или сообщение о временной недоступности. Она иногда приходит с кодом 200. Перед разбором проверьте признаки ожидаемого документа. Не считайте любой полученный HTML пригодным источником товаров.

Если содержимое загружается отдельно, определите разрешённый способ получения этих данных. Разбор первоначального HTML может не содержать нужных записей. Учитывайте правила источника и доступные API. Способ сбора не должен опираться на обход ограничений, которые компания не разрешала.

## Установите проверки результата

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

| Признак | Возможная проверка |
| --- | --- |
| Пустой ключ | Запись не участвует в автоматическом обновлении |
| Резкое уменьшение списка | Проверяется источник и пагинация |
| Массовые нулевые цены | Сверяется извлечение и значение поля |
| Повторяющиеся ключи | Проверяются варианты и дубли |

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

## Разделите сбор и применение

Сначала сформируйте проверяемый пакет. Затем решайте, можно ли обновлять систему. Пустой ответ не должен автоматически обнулить остатки или удалить отсутствующие товары. Для полной и частичной выгрузки нужны разные правила.

Сохраните дату источника и номер запуска. Это позволяет выяснить, какие данные применены, и не заменить свежий результат более старым повтором. При исправлении парсера покажите предварительный список изменений, особенно для цен и признаков доступности.

## Подготовьте диагностику изменений

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

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

В QuickLanding можем разработать парсер с проверкой пакета до публикации. Для оценки нужны разрешённый источник, требуемые поля и пример итоговой таблицы. Главный результат работы: ваша команда получает пригодные данные и замечает изменения источника до ошибочного обновления каталога.

## Документация и проверка сведений

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

- [MDN: разбор документа через DOMParser](https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString)
- [MDN: коды ответов HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status)

## Материалы по соседним задачам

- [Артикулы и идентификаторы: как выбрать ключ товара для обмена](/knowledge/catalog-sku-rules/)
- [Обновление цен: как обнаруживать пустые, ошибочные и устаревшие значения](/knowledge/catalog-price-update/)
- [Парсеры товарных каталогов](/services/development/data/catalog-parser/)

## Частые вопросы

### Отсутствующую цену можно записать как ноль?

Только если источник и бизнес-правила действительно подразумевают нулевую цену. В остальных случаях сохраняйте отдельное состояние отсутствующих сведений и не заменяйте им действующую цену.

### Код 200 подтверждает правильную страницу?

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

### Как часто проверять парсер?

Базовые проверки выполняйте при каждом сборе. После изменения источника или программы сравните контрольные записи и полноту выгрузки перед применением данных.

Автор: Владимир Николаев

