euroauto — Парсинг euroauto.ru
Тип: Подпроект (сбор данных)
Источник: spb.euroauto.ru
Цель: Собрать полную базу деталей грузовиков с совместимостью для импорта в Drupal-каталог
Статус: Ожидание капчи → запуск полного скрапинга (56 200 URL)
Обновлено: 2026-03-26
← Назад в IT
СТРУКТУРА
euroauto/
├── CLAUDE.md ← Ты здесь
│
├── docs/
│ ├── SCRAPING.md ⭐ Главное ТЗ: масштаб, поля, схема БД, алгоритм
│ ├── ANALYSIS.md Анализ структуры euroauto.ru
│ └── HIERARCHY.md Иерархия категорий euroauto
│
├── scripts/
│ │
│ ├── — ОБРАБОТКА ДАННЫХ (pipeline) —
│ ├── s0_merge_all.py ⭐ Шаг 0: Сборка всех источников → euroauto.sqlite
│ ├── p1_filter.py ⭐ Шаг 1: Фильтр (убрать легковые) → p1_filtered.sqlite
│ ├── p2_merge.py ⭐ Шаг 2: Единые названия (name_full) → p2_merged.sqlite
│ ├── p3_aggregate.py ⭐ Шаг 3: Единые URL/OEM/аналоги → p3_final.sqlite
│ │ + p3_report.txt (какие модели не спарсены)
│ │
│ ├── — СКРАПИНГ —
│ ├── scraper.py ⭐ СКРАПЕР: браузерный v8 (Playwright CDP, детали)
│ ├── catalog_parser.py ПАРСЕР: серверный (httpx, без браузера)
│ ├── catalog_discover.py СКРАПЕР КАТАЛОГА: браузерный (Playwright CDP)
│ ├── gen_urls.py Генератор URL: catalog_models.json → URL-список
│ ├── launch_scraper.sh Запуск скрапера через коннектор
│ ├── s1_rescrape.py Доскрапить v7→v8 (добавить attr/country)
│ ├── s2_complete.py Скрапить новые URL
│ └── s3_build.py JSONL → parts.csv + compatibility + cross_table
│
└── data/
└── README.md Где лежат данные (S3 пути)
PIPELINE ОБРАБОТКИ ДАННЫХ
# Шаг 0: Собрать все источники в единую базу
python3 scripts/s0_merge_all.py
# → /mnt/beget-s3/projects/lider/lideravto/euroauto/euroauto.sqlite
# Шаг 1: Убрать легковые, оставить только грузовые бренды
python3 scripts/p1_filter.py
# → p1_filtered.sqlite + p1_missing.txt (непокрытые модели)
# Шаг 2: Дедупликация по name_full (единые названия)
python3 scripts/p2_merge.py
# → p2_merged.sqlite
# Шаг 3: Единые URL/OEM/аналоги + анализ что недопарсено
python3 scripts/p3_aggregate.py
# → p3_final.sqlite + p3_report.txt (ФИНАЛЬНАЯ БАЗА)
Базы данных (S3: /mnt/beget-s3/projects/lider/lideravto/euroauto/)
| Файл |
Шаг |
Строк |
Содержимое |
s0_raw.sqlite |
s0 |
1 428 708 |
Все строки из всех источников, без дедупликации |
p1_filtered.sqlite |
p1 |
— |
Только грузовые бренды |
p2_merged.sqlite |
p2 |
— |
Дедуплицировано по name_full |
p3_final.sqlite |
p3 |
— |
ФИНАЛЬНАЯ: +OEM, +аналоги, +part_url, +models_count |
p3_report.txt |
p3 |
— |
Какие модели не спарсены → нужно допарсить |
ДВА ТИПА СКРИПТОВ
ПАРСЕР (серверный, без браузера)
# Запуск прямо на сервере:
python3 scripts/catalog_parser.py # HTTP-запросы к euroauto.ru
python3 scripts/catalog_parser.py --fallback-only # только из cached json
python3 scripts/s3_build.py # сборка финальных CSV
# Результат → /mnt/beget-s3/up/catalog_models_*.json
СКРАПЕР (браузерный, через коннектор на ПК kt)
# Запуск через launch_scraper.sh (деплоит + запускает):
bash scripts/launch_scraper.sh # продолжить (--resume)
bash scripts/launch_scraper.sh --fresh # начать заново
bash scripts/launch_scraper.sh --test 20 # тест
bash scripts/launch_scraper.sh --tabs 5 # 5 вкладок
# Или вручную:
cp scripts/scraper.py /mnt/beget-s3/dl/scraper.py
# → создать run_scraper_HHMMSS.sh в dl/
# Результат → /mnt/beget-s3/up/scraped_parts_*.jsonl
ТЕКУЩИЙ СТАТУС
| Метрика |
Значение |
| Прогресс скрапера |
6 860 / 56 200 (12%) — очередь 56K |
| Записей в JSONL |
141 672 (v7, без attr/country) |
| Полная очередь |
56 200 URL (rescrape_urls_full.txt) |
Pipeline (обработка данных)
| Шаг |
Файл |
Строк |
Статус |
| s0 — сырые данные |
s0_raw.sqlite |
1 428 708 |
✅ готово |
| p1 — фильтр (грузовые) |
p1_filtered.sqlite |
— |
⏳ запустить |
| p2 — дедупликация |
p2_merged.sqlite |
— |
⏳ |
| p3 — финальная база |
p3_final.sqlite |
— |
⏳ |
ДАННЫЕ (S3)
Папка всех исходных данных: /mnt/beget-s3/projects/lider/lideravto/parsing/
(56 файлов: CSV + JSONL, скопированы из up/ и upload/)
| Файл |
Путь |
Содержимое |
| s0_raw.sqlite |
/mnt/beget-s3/projects/lider/lideravto/euroauto/ |
1 428 708 строк, 591 MB |
| Текущий JSONL |
parsing/scraped_parts_20260325_044937.jsonl |
141 672 записей |
| Полная очередь URL |
/mnt/beget-s3/dl/rescrape_urls_full.txt |
56 200 URL |
| Старая очередь |
/mnt/beget-s3/dl/rescrape_urls.txt |
11 632 URL |
| Прогресс |
/mnt/beget-s3/up/scraper_progress.txt |
done=6860 |
| HTML-кеш |
~/SERVER/dataspace/cache/euroauto/ |
на ПК kt |
СХЕМА ДАННЫХ (итог)
parts.csv — уникальные детали
oid, name_full, article, attr, brand, part_type,
price, href, image_url, country,
category_ea, category_ru, system, node
compatibility.csv — деталь × грузовик
oid, truck_brand, truck_model, truck_mod, source_url
PK: (oid, truck_brand, truck_model, truck_mod)
cross_table.csv — кросс: тип × модель
category_ea, truck_brand, truck_model, truck_mod, part_oids, count
PK: (category_ea, truck_brand, truck_model, truck_mod)
КЛАССИФИКАЦИЯ part_type
| Тип |
Бренды |
original |
DAF, Volvo, Mercedes Benz, Scania, MAN, Renault, Iveco |
brand |
Febi truck, Sampa, Auger, DT Spare Parts, Wabco, NRF truck, Vaden, EBS, ROSTAR, TruckExpert, Emmerre, Covind, Startec, Starkmeister, SORL, KS truck, Marshall |
analog |
всё остальное |
Все детали в каталоге — новые (/part/new/ в href). БУ не парсится.
СЛЕДУЮЩИЕ ШАГИ
1. ✅ catalog_parser.py — серверный парсер создан
2. ✅ launch_scraper.sh — запуск скрапера через коннектор
3. ✅ 56 200 URL сгенерировано (rescrape_urls_full.txt)
4. ⏳ Пройти SmartCaptcha в браузере → запустить catalog_discover.py
5. ⏳ Заменить очередь: rescrape_urls_full.txt → rescrape_urls.txt
6. ⏳ Запустить s2_complete.py (56 200 URL, всё с нуля)
7. ⏳ Запустить s3_build.py → parts.csv + compatibility.csv
8. ⏳ Импорт в Drupal через dru_lider_importer
КЛЮЧЕВЫЕ ДОКУМЕНТЫ
Версия: 1.0