Проблема: каждый сайт устроен по-своему
Представьте задачу: нужно автоматически определить цену товара на веб-странице. Звучит просто? На самом деле это одна из самых сложных задач в области веб-скрейпинга. Каждый интернет-магазин использует свою структуру HTML, собственные CSS-классы, уникальную разметку. То, что на одном сайте находится в теге с классом price-main, на другом может быть в совершенно другом месте с совершенно другим названием.
Добавьте к этому то, что на одной странице может быть десятки числовых значений: артикулы, рейтинги, количество отзывов, номера телефонов, почтовые индексы. Среди всего этого нужно безошибочно найти именно цену товара — задача, которая даже для человека не всегда очевидна.
Традиционные трекеры цен решают эту проблему в лоб: для каждого магазина пишется отдельный парсер с жёстко заданными правилами. Это работает, но только для ограниченного числа магазинов. Стоит сайту обновить дизайн — и парсер ломается. Поддерживать сотни таких парсеров в актуальном состоянии — задача, требующая постоянных ресурсов.
Решение: машинное обучение вместо жёстких правил
В DealMonitor мы пошли другим путём. Вместо того чтобы вручную описывать структуру каждого сайта, мы обучили модель машинного обучения, которая самостоятельно находит цену на странице. Система анализирует HTML-код и определяет, какой именно элемент содержит цену товара.
Это принципиально другой подход: вместо правил — обученная модель, которая понимает, как выглядит цена в контексте веб-страницы. Подобно тому как человек, увидев незнакомый сайт, интуитивно находит цену по её расположению, размеру шрифта и окружающему контексту, модель научилась делать то же самое — только автоматически и без устали.
Как это работает: шаг за шагом
Этап 1: Сбор HTML-страницы
Когда вы добавляете товар для отслеживания цены, система загружает страницу целиком. Для сайтов, которые формируют контент динамически через JavaScript, используется полноценный браузер в фоновом режиме — это гарантирует, что все элементы страницы будут загружены, как если бы вы открыли её вручную.
Этот этап особенно важен для современных интернет-магазинов, где цена может подгружаться асинхронно через API-запросы уже после загрузки основного HTML. Обычный HTTP-запрос в таком случае вернёт страницу без цены — и только полноценный браузер сможет дождаться загрузки всех элементов.
Этап 2: Извлечение признаков
Далее система анализирует каждый текстовый элемент на странице и извлекает набор признаков — характеристик, по которым можно определить, является ли данный элемент ценой. Среди этих признаков:
- Числовой формат — содержит ли текст числа с десятичными разделителями, символы валют
- Расположение на странице — позиция элемента относительно других блоков
- Размер и визуальное оформление — цена обычно выделяется крупным шрифтом и ярким цветом
- Контекст окружающих элементов — наличие рядом кнопки «Купить», корзины, описания товара
- HTML-атрибуты — имена классов, идентификаторы, data-атрибуты, которые часто содержат подсказки
- Структурные паттерны — вложенность элементов, соседние теги, микроразметка Schema.org
В общей сложности для каждого элемента-кандидата извлекается несколько десятков признаков. Именно это богатство информации позволяет модели принимать точные решения.
Этап 3: Классификация кандидатов
Обученная модель машинного обучения оценивает каждый элемент-кандидат и присваивает ему оценку вероятности того, что это именно цена товара. Модель была обучена на тысячах примеров с различных интернет-магазинов и научилась распознавать общие паттерны, характерные для ценовых элементов.
Важно, что модель не просто ищет числа с символом валюты. Она учитывает весь контекст: где расположен элемент, какие теги его окружают, как он оформлен визуально. Это позволяет отличить цену товара от цены доставки, зачёркнутой старой цены или цены аксессуара в блоке рекомендаций.
Этап 4: Выбор лучшего кандидата
Из всех кандидатов система выбирает тот, который получил наивысшую оценку. При этом учитываются дополнительные факторы: соответствие формату цены, наличие валюты, адекватность числового значения. Это помогает отфильтровать ложные срабатывания — например, артикулы товаров или номера телефонов.
Почему не LLM?
Вопрос, который часто возникает: почему бы просто не использовать большую языковую модель для анализа страницы? Мы исследовали этот подход, и он оказался непрактичным по нескольким причинам:
- Размер HTML — типичная страница интернет-магазина содержит сотни килобайт HTML-кода, что превышает контекстное окно большинства моделей
- Скорость — LLM обрабатывают запрос секунды, а при регулярной проверке сотен товаров это критично
- Стоимость — вызов LLM-API для каждого товара при каждой проверке был бы экономически нецелесообразен
- Детерминированность — специализированная ML-модель даёт стабильные, воспроизводимые результаты
Специализированная модель машинного обучения работает быстрее, дешевле и надёжнее для этой конкретной задачи. Она обрабатывает страницу за доли секунды и не требует дорогостоящих API-вызовов.
Преимущества ИИ-подхода для пользователей
Работает с любым магазином
Вам не нужно проверять, поддерживается ли конкретный магазин. Просто добавьте ссылку — и система попытается определить цену. Это работает с крупными маркетплейсами, небольшими нишевыми магазинами и даже с зарубежными площадками. Больше никаких ограничений на список поддерживаемых сайтов.
Устойчивость к изменениям сайтов
Когда магазин обновляет дизайн, традиционные парсеры перестают работать. Модель машинного обучения, обученная на признаках, а не на конкретной разметке, продолжает находить цену даже после значительных изменений на сайте. Это означает бесперебойный мониторинг без необходимости ручного вмешательства.
Распознавание валют
Система автоматически определяет валюту цены — рубли, доллары, евро и другие. Это особенно полезно при мониторинге товаров на зарубежных площадках, где цена может быть указана в любой валюте.
Точность и надёжность
Модель обучена отличать основную цену товара от зачёркнутых старых цен, цен за единицу товара при оптовых покупках, стоимости доставки и других числовых значений на странице. Это обеспечивает высокую точность мониторинга и минимум ложных срабатываний.
Применение в DealMonitor
Технология ИИ-распознавания цен лежит в основе работы DealMonitor. При добавлении товара через браузерное расширение или веб-интерфейс система автоматически определяет текущую цену. Затем, при регулярных проверках, модель каждый раз анализирует страницу заново, фиксирует текущую цену и сравнивает её с вашей целевой.
Когда цена падает до нужного уровня, вы получаете уведомление и можете воспользоваться стратегиями экономии, чтобы максимизировать выгоду от покупки. Узнайте больше о том, как выстроить комплексную систему умных покупок в интернете.
Будущее технологии
Машинное обучение в области распознавания цен продолжает развиваться. Среди перспективных направлений:
- Прогнозирование будущих цен на основе исторических данных и сезонных трендов
- Определение поддельных скидок, когда магазин завышает старую цену для создания иллюзии большой скидки
- Автоматическое распознавание комплектаций и вариаций товара
- Анализ отзывов и рейтингов для комплексной оценки выгодности покупки
Технологии становятся умнее, а покупки — выгоднее. Попробуйте DealMonitor и убедитесь, как ИИ может помочь вам экономить на каждой покупке.
