Почему парсер автокаталога ошибается после запуска и как это предотвратить

Шесть историй из проекта для АВГ Моторс

# АВГ # интеграции # парсинг # разработка
  • Фёдор ЩербаковАвтор:Фёдор Щербаков
  • Время чтения: 7 минут
  • Обновлено:

Летом 2026 года мы запустили для АВГ Моторс систему, которая сама собирает объявления с che168.com — одной из крупнейших в Китае площадок подержанных автомобилей. Система переводит объявления, обрабатывает фотографии, считает цену под ключ с растаможкой и публикует машины в каталог на сайте. Сейчас в каталоге avgmotors.ru больше 220 тысяч автомобилей, и ни один из них менеджер не переносил руками. Как устроена система изнутри, мы рассказали в кейсе. Эта статья — о том, что начинается после запуска.

Короткий ответ на вопрос из заголовка: парсер ошибается не потому, что его плохо написали, а потому, что мир вокруг него меняется. Источник отдаёт странные ответы, продавцы переподают объявления, машинный перевод путает модели, а у части машин просто нет нужных данных. Ниже — шесть реальных историй: что сломалось, как мы это заметили, как исправили и какую защиту поставили, чтобы это не повторилось.

Схема системы парсинга che168 из шести программ
Система из шести программ: сбор, перевод, фото, публикация, планировщик, API админки

Почему ошибка парсера стоит денег

Ошибка в скрипте для внутренней аналитики — это неверная цифра в отчёте, которую увидят два человека. Ошибка в парсере, который наполняет каталог, видна покупателю:

  • в карточке Haval стоит марка MG — человек перестаёт доверять всему каталогу;
  • мощность отличается от официальной — клиент сравнивает с дилерскими характеристиками и задаёт неудобные вопросы;
  • цена под ключ занижена — менеджеру приходится объяснять, почему на самом деле машина стоит в разы дороже;
  • целой марки нет в фильтре — значит, нет и заявок по ней.

Поэтому парсер для нас — не скрипт «на выходные», а система, у которой есть проверки, журнал ошибок и понятный порядок восстановления. Все истории ниже укладываются в три класса риска: источник отдаёт неправильные данные, расчёты опираются на неполные данные, один и тот же объект выглядит по-разному.

Риск 1. Источник отдаёт неправильные данные

История 1. Машины, которые «стали» MG

Симптом. В каталоге появились автомобили марки MG, хотя на фотографиях были Haval, BMW и Cadillac.

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

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

Защита. Теперь система проверяет ответ источника на правдоподобность. Если размер выдачи не похож на реальный, она не обходит такие страницы, а перепроверяет серию позже.

Вывод. Внешний источник может ошибаться «тихо», не сообщая об ошибке. Проверять нужно не только «пришёл ли ответ», но и «похож ли он на правду».

История 2. Jeep, Chevrolet и Geely «закончились»

Симптом. По ряду известных марок — Jeep, Chevrolet, Geely, Li Auto и другим — в каталоге не было ни одной машины. Это выглядело как «нет в наличии».

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

Исправление. Сверили адреса с живым сайтом и исправили их. Каталог сразу пополнился сотнями моделей.

Вывод. Любой справочник, составленный «по логике», нужно сверять с реальным источником. И «успешно, но пусто» — тоже результат, который стоит проверять.

Риск 2. Расчёты на неполных или неверно пересчитанных данных

История 3. Каждая машина «слабее» на 1,4%

Симптом. Популярный полуторалитровый турбомотор Volkswagen мощностью 118 кВт в каталоге показывался как 158 л.с. У официальных дилеров — 160.

Причина. Киловатты от источника были верными, ошибка была в пересчёте. Использовался коэффициент для механической лошадиной силы (hp: 1 кВт = 1,341), а в российских характеристиках «л.с.» — метрическая (1 кВт ≈ 1,36). Разница — около 1,4%, и она касалась каждой машины в каталоге.

Исправление. Заменили коэффициент и обновили мощность во всём каталоге одной операцией, без перепубликации каждой карточки.

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

Карточка автомобиля с мощностью в л.с. и кВт
У этого Volkswagen Beetle те же 118 кВт: после исправления — 160 л.с., а не 158

История 4. Дорогая машина, которая считалась как дешёвая

Симптом. У части автомобилей цена под ключ выходила в разы ниже реальной.

Причина. Растаможка зависит от объёма и мощности двигателя. У некоторых машин, в основном из параллельного импорта, источник этих данных не отдавал, и калькулятор считал с нулями. Для машины старше трёх лет это значит нулевую пошлину и минимальный утилизационный сбор. Формула была правильной — на входе были пустые данные.

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

Защита. Машина без данных о двигателе в каталог не публикуется.

Вывод. Ноль — опасное значение по умолчанию. Если данных нет, система должна остановиться, а не посчитать.

Риск 3. Один и тот же объект выглядит по-разному

История 5. Одна машина — две карточки

Симптом. В каталоге встречался один и тот же автомобиль в двух карточках.

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

Исправление. Сверяем автомобили по VIN — он есть на странице объявления. Если VIN совпал, старая карточка снимается с витрины. На случай ошибки снятие обратимо в течение нескольких дней.

Был и второй, более тонкий случай. Два объявления одной машины обрабатывались почти одновременно и «разминулись»: каждое проверило, нет ли дубля, раньше, чем другое успело сохраниться. Теперь записи с одним VIN обрабатываются строго по очереди.

Вывод. Уникальность товара определяется свойствами самого объекта, а не номером объявления. И проверять это нужно с учётом одновременной обработки.

История 6. «Песня L» и «оплата»

Симптом. В названиях и комплектациях появлялись странные слова.

Причина. Машинный перевод переводит буквально и не знает автомобильного контекста. Несколько примеров из того, что предлагал Google Translate:

  • 宋L — модель BYD Song L — «Песня L»;
  • 款 — пометка модельного года — «оплата»;
  • 国VI — экологический стандарт «Китай-6» — «страна VI».

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

Вывод. Машинный перевод — это черновик. Каталогу нужен словарь и человек, который за ним следит.

Что спросить у подрядчика, если вы заказываете парсер

Эти вопросы помогут отличить систему, которая выдержит годы работы, от скрипта, который сломается при первом изменении источника:

  1. Что будет, если источник вернёт странный ответ? Есть ли проверка правдоподобности, а не только «ответ пришёл»?
  2. Откуда берутся справочники — категории, марки, модели: из самого источника или составлены вручную?
  3. Что система делает с пустыми данными: публикует с нулями или останавливается?
  4. Как определяется дубль: по номеру объявления или по свойствам товара?
  5. Кто и как проверяет перевод и единицы измерения?
  6. Есть ли журнал ошибок, понятный менеджеру без программиста? В нашей системе технические ошибки переведены на понятный русский язык.
  7. Можно ли поставить сбор на паузу и продолжить, не потеряв данные?
  8. Кто поддерживает систему после запуска?

От чего зависят стоимость и сроки

  • Источник. Есть ли у него защита от автоматического сбора и как часто меняется вёрстка.
  • Объём. Сотни товаров или сотни тысяч, как часто нужно обновлять данные.
  • Обработка. Перевод, фотографии, расчёт цены, приведение характеристик к единому виду.
  • Интеграция. Куда выгружать — WooCommerce, 1С-Битрикс, собственный API — и что делать с товарами, которые исчезли из источника. Похожие задачи мы решаем в рамках доработки функционала сайтов.
  • Управление. Нужна ли панель, журнал, ручная проверка спорных данных.
  • Поддержка. Источник меняется, и система должна меняться вместе с ним. Это отдельная работа — техническая поддержка, а не разовая доработка.

Нужно автоматизировать сбор данных?

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

Посмотрите еще полезные материалы

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

Разбираем концепт сайта психолога: структура из 10 блоков, тёплая палитра, запись прямо из карточки услуги, анимации без давления и что подготовить специалисту до заказа.

#дизайн #изи-разбор #лендинг