Разработка парсера che168 для каталога автомобилей АВГ Моторс

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

Клиент:АВГ Моторс — импорт автомобилей из Китая
Роль студии:Проектирование и разработка системы парсинга, перевод и обработка данных, интеграция с WooCommerce, панель управления, поддержка после запуска
Стек технологий:
Redis RedisDocker DockerPython PythonPostgreSQL PostgreSQL
Год:
Планируете похожий сайт? Обсудим проект
Обсудим проект - персона проекта

Клиенту требовался собственный каталог автомобилей на сайте, который автоматически получает данные с китайского сайта объявлений che168.com, переводит их на русский, обрабатывает фотографии и поддерживает каталог в актуальном состоянии.

Задача: свой каталог без ручного переноса объявлений

Главная задача была не просто «скачать объявления». Нужно было построить систему, которая работает постоянно: находит новые автомобили, обновляет данные, обрабатывает ошибки и передаёт готовые карточки в каталог без ежедневного участия менеджера.

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

Не просто парсер, а система из 6 программ

Система состоит из шести независимых программ:

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

Между компонентами используются очереди Redis. Поэтому, если, например, временно недоступен переводчик, уже обработанные автомобили не останавливаются: другие этапы продолжают работать, а незавершённые задачи ждут своей очереди.

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

Схема системы парсинга che168: шесть программ, связанных очередями Redis

Как обходим блокировки китайского сайта

Автоматически собирать большие объёмы данных с крупного сайта непросто. che168 использует антибот-защиту, поэтому система отслеживает сразу несколько признаков блокировки: сетевые ошибки, HTTP 403/429/503, капчу, скрытые проверки браузера и подозрительно короткие ответы.

Чтобы система могла продолжать работу, используются:

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

Например, адрес, который начал получать ошибки, автоматически выводится из работы на время. А проблемная страница отправляется в карантин и периодически проверяется повторно. Все эти настройки доступны из панели управления.

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

Оригинальная система перевода: перевод, который становится точнее со временем

Просто отправлять каждое описание в Google Translate нельзя: машинный перевод путает модели и комплектации. Например, BYD Song L он переводит как «Песня L», а маркер модельного года 款 — как «оплата». Автомобильные термины требуют словаря, который можно уточнять и редактировать.

Поэтому сделали трёхступенчатую систему:

  1. сначала используется собственный словарь уже проверенных переводов;
  2. если точного совпадения нет, система пытается собрать фразу из известных частей;
  3. только оставшийся непереведённый текст отправляется в Google Translate.

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

Изи-студия разработала парсинг che168.com для Авг-моторс: перевод, который становится точнее со временем
Трехступенчатая система перевода автомобильных описаний с накоплением знаний

Изображения: тоже отдельная задача

У автомобиля может быть большая галерея — обычно 20–30 фотографий, иногда около 40. Поэтому система не ограничивается миниатюрой из списка объявлений.

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

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

Публикация в WooCommerce без хаоса

После обработки автомобиль попадает в каталог WooCommerce.

Здесь особенно важны несколько правил:

  • товар определяется по уникальному SKU, поэтому дубли не создаются;
  • ручные действия менеджера не перезаписываются автоматикой;
  • новые автомобили сначала появляются как черновики;
  • цена рассчитывается самим сайтом по единой формуле;
  • автомобиль, временно исчезнувший с источника, сначала получает статус «снят с продажи», а не удаляется сразу.

Если объявление появляется снова, карточка может автоматически вернуться в прежний статус вместе с накопленной историей.

Всё управление — в одной панели

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

Менеджер видит:

  • работает система или стоит на паузе;
  • сколько автомобилей находится на каждом этапе;
  • что сейчас находится в очереди;
  • журнал активности;
  • состояние прокси;
  • скорость обхода;
  • словарь переводов.

Причём технические ошибки переведены на понятный русский язык. Менеджеру не нужно разбираться, что означает JS challenge detected: система объясняет, что сайт показал проверку вместо результатов.

Для работы с инструментом также была подготовлена простая инструкция.

Калькулятор растаможки

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

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

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

Результат

Сейчас в каталоге avgmotors.ru больше 220 тысяч автомобилей из Китая. Данные о них система собирает, переводит и обрабатывает сама, фотографии приводит к единому виду, а готовые машины передаёт в каталог.

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

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

Запуск — только половина работы. Что ломается в такой системе после запуска и какие проверки мы добавили, чтобы ошибки не попадали в каталог, рассказали в статье «Почему парсер автокаталога ошибается после запуска и как это предотвратить».

Кому может пригодиться такой парсер?

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

Например:

  • парсер товаров и каталогов;
  • парсер для маркетплейсов;
  • парсер объявлений;
  • парсер цен на маркетплейсах;
  • парсеры интернет-магазинов;
  • парсер данных сайтов для внутренней аналитики.

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

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

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

Если вам нужно заказать парсер, сделать парсер сайта или разобраться, как автоматизировать сбор данных с конкретного источника — расскажите о задаче. Обсудим источник, объём данных и нужный результат и предложим подходящий вариант реализации.

Заказать разработку парсера