D
Drom Parser
D
Drom Parser

Введите ключ доступа

Панель управления защищена ключом.



Дашборд

Управление парсером

🧪 Тест парсинга поколений

🧪 Тест парсинга комплектаций

📦 Откуда взялись данные?

Данные получены путём парсинга каталога drom.ru — крупнейшего российского автомобильного портала.

Парсинг проходил поэтапно через Puppeteer (управляемый браузер Chrome):

  1. Собирались все Марки из каталога
  2. Для каждой марки — все Модели
  3. Для каждой модели — все Поколения (с годами выпуска)
  4. Для каждого поколения — все Комплектации с габаритами кузова

Итого: марки → модели → поколения → комплектации. Иерархия сохранена полностью.

🚗 Только легковые автомобили — грузовые автомобили, мотоциклы и спецтехника в базу не включались.

🗂 Что такое «сырые данные» и почему их изменяли?

Сырые данные — это то, что пришло напрямую с drom.ru без каких-либо правок.

Недостатки сырых данных:

  • Дубли поколений. Drom хранит одно поколение отдельно для каждого типа кузова. Например, BMW G20 (7-е поколение) — это 5 разных страниц: Седан, Универсал, Лифтбек и т.д. Парсер создаёт 5 одинаково выглядящих строк.
  • Технические названия. Названия поколений с drom.ru содержат служебные суффиксы и не подходят для показа клиенту.
  • Нет агрегации кузовов. Нельзя показать клиенту «G20 · Седан, Универсал» — типы кузовов разбросаны по отдельным строкам.

Для решения этих проблем были созданы этапы нормализации, переименования и дедупликации поколений.

🏗 Данные для ERP ClientBase

ERP-система ClientBase использует фиксированную структуру таблиц для автомобильного каталога. Данные подготовлены под эту структуру:

Таблица Название Источник Ссылка на поля
1200 Марки Марки (сырые данные) fields.php?table=1200
1210 Модели Модели (сырые данные) fields.php?table=1210
1220 Поколения Уникальные поколения (ERP) fields.php?table=1220
1230 Серии Кузова / комплектации (ERP) fields.php?table=1230

⚠️ Эти данные пока не импортированы в ClientBase

9 422
поколений сейчас в ClientBase
14 127
уникальных поколений в новой базе

Качество данных значительно выше: новая база содержит на +4 705 поколений больше (+50%). Все поколения дедуплицированы, названия нормализованы, для каждого поколения агрегированы типы кузовов. Данные актуальны на момент парсинга.

Планируемая схема интеграции:

  • Текущие записи в ClientBase получат status = 1 (архив) — данные сохранятся, но станут неактивными
  • Новые данные из этого парсера будут импортированы со status = 0 (активные)
🔍 Вкладки «Пример формы» и «Форма v2»

🔍 Пример формы

Форма на сырых данных — поколения берутся напрямую из таблицы generations. Видна проблема: одно поколение дублируется несколько раз (по числу типов кузовов). Клиент видит, например, 5 одинаковых «G20 7 поколение, рестайлинг» — неудобно.

🔎 Форма v2

Форма на дедуплицированных данных — итоговый вид, который будет на сайте перевозки автовозами. Поколения берутся из таблицы unique_generations — без дублей. Обратите внимание на селект кузовов: он подтягивает агрегированные типы кузовов для выбранного поколения.

Лог

Лог пуст

Экспорт / Импорт

💾 Полный дамп базы данных

Экспорт / импорт всех таблиц одним JSON-файлом

Скачать дамп всех таблиц в JSON

Восстановить БД из JSON-файла (все данные будут заменены)

📦 Экспорт / Импорт для ERP

Включает: Марки → Модели → Уникальные поколения → Кузова (только серии, привязанные к уникальным поколениям)

Скачать весь ERP-пакет одним файлом

Импорт таблиц по отдельности

📋 Экспорт / Импорт таблиц

Выберите таблицу — экспорт скачает JSON, импорт обновит данные (upsert по ID, без каскадного удаления)


Нормализация названий

✨ Нормализация поколений

Поиск и исправление «мусорных» названий в базе данных (рекламные бейджи, даты, коды кузова и т.д.)

проблемных
всего записей
выбрано
Проблемных записей не найдено — все названия в порядке.
ID Марка / Модель Текущее название Нормализованное
Нормализовано в этой сессии: записей
Данные можно откатить до оригинала
ID Марка / Модель (до нормализации) Было Стало
🔍
Нажмите «Найти проблемные записи»
Инструмент проанализирует все поколения и предложит исправления
Переименование по drom.ru

🏷️ Переименование поколений

Получает H1 страницы поколения на drom.ru и извлекает из него код/название поколения + рестайлинг

🔬 Тест — проверить один URL

⚠ Ошибка
H1 / Title страницы
Результат парсинга

🚀 Полный прогон

Обходит каждую строку в таблице поколений, загружает страницу и обновляет название

🌐 Puppeteer — надёжно, полное рендеринг JS, медленнее ⚡ HTTP-запрос — быстро, но явный реза повышает риск бана
/ поколений Осталось: Обрабатывается... Завершено
Лог
Лог пуст
🏷️
Переименовано в этой сессии: записей
Можно откатить обратно
ID Было Стало
🏷️
Введите URL для теста или запустите полный прогон
Алгоритм: загружает страницу поколения → извлекает H1 → парсит название
Пример результата для Toyota Land Cruiser 4-й рестайлинг 2023, ..., 8 поколение, J70
→ J70 8 поколение, 4-й рестайлинг


Марки

ID Название Slug URL Дата
Нет данных


Модели

Фильтр по марке:
ID Марка Модель Slug URL
Нет данных


Поколения

Фильтр:
ID Фото Марка Модель Поколение Годы URL
Нет данных


Комплектации

Фильтр:
ID Марка Модель Поколение Комплектация Кузов Объём Мощность КПП Привод Д×Ш×В
Нет данных

Пример формы

Выберите марку, модель, поколение и комплектацию

Выбрано

📐 Д × Ш × В:

Фото поколения

Пример формы v2

Поколения без дублей — одно поколение объединяет все типы кузовов

Выбрано

📐 Кузова поколений

🗑
Марка Модель Поколение Годы Тип кузова Д × Ш × В, мм Источн. Обновлено
Загрузка…
Нет данных. Нажмите «Вычислить всё» для заполнения таблицы.

Лейблы кузовов

Таблица generation_body_summary хранит предвычисленную строку кузовов для каждого поколения (например: «Седан, Туринг»).

Эти данные используются в дропдаунах поколений, чтобы различать записи с одинаковым названием (например несколько кузовов BMW G20).

Источник: таблица generation_bodies (должна быть предварительно вычислена на странице «Кузова»).

Загрузка статистики…
Нет данных.

Вычислить лейблы

Группирует все записи из generation_bodies по поколению и сохраняет строку кузовов («Седан, Туринг, Лифтбек» и т.д.) в таблицу-кэш.

Уникальные поколения

Дедуплицированный список поколений для формы сайта и ERP. Одна строка = одно поколение, без разбивки по кузовам.

Кузова сгруппированы из таблицы «Лейблы кузовов». Поколения без комплектаций переносятся как есть. Исходные данные в таблице «Поколения» не изменяются.

Загрузка статистики…
Фильтр:
ID Марка Модель Поколение Кузова Годы Источников
Загрузка…
Нет данных — нажмите «Пересчитать»

Подтверждение