lada_scraper: парсер phpBB форума нива-лада.рф + доку

This commit is contained in:
2026-06-04 11:47:02 +03:00
parent 928c979509
commit eca5e3cda6
15 changed files with 1108 additions and 7 deletions
+141
View File
@@ -0,0 +1,141 @@
# Парсеры автомобильных форумов для RAG
## Цель
Выкачать техническую информацию с автомобильных форумов для создания RAG-базы знаний по ремонту автомобилей.
## Источники данных
### 1. vwts.ru — VAG (Volkswagen/Audi/Škoda/SEAT)
- **Движок:** XenForo
- **~60 000+ тем, ~1.2 млн сообщений**
- **Парсер:** `vwts_scraper/`
- Структура URL:
- Раздел: /forum/vag/{slug}/ (пагинация: page-N)
- Тема: /forum/topic/{id}/ (пагинация: page-N)
- Поиск: /forum/search/
- Теги: /forum/tags/
- RSS: /forum/vag/-/index.rss
### 2. нива-лада.рф — Lada Niva / Chevrolet Niva / ВАЗ
- **Движок:** phpBB (subsilver2) + Board3 Portal
- **~20 технических разделов, активный, без CloudFlare**
- **Парсер:** `lada_scraper/`
- Структура URL:
- Раздел: /n/viewforum.php?f=ID (пагинация: ?start=N)
- Тема: /n/viewtopic.php?f=ID&t=ID (пагинация: ?start=N)
- RSS: /n/feed.php
### 3. Статьи vwts.ru
- ~500+ статей по ремонту VAG
- Sitemap: https://vwts.ru/sitemap.xml
## Разделы форума (18 шт)
| Раздел | Slug | Тем | Постов |
|---|---|---|---|
| Диагностика | diagnostika | 2 322 | 36 052 |
| Бензиновые двигатели | benzinovye-dvigateli | 4 559 | 98 158 |
| Дизельные двигатели | dizelnye-dvigateli | 3 857 | 101 174 |
| Система охлаждения/отопление/кондиц. | sistema-ohlazhdeniya-otoplenie-konditsionirovanie | 6 133 | 90 689 |
| Система смазки | sistema-smazki | 258 | 11 723 |
| Системы впрыска и зажигания | sistemy-vpryska-i-zazhiganiya | 3 435 | 87 636 |
| Топливная система | toplivnaya-sistema | 326 | 4 916 |
| Выпускная система | vypusknaya-sistema | 1 064 | 16 171 |
| Подвеска | podveska | 4 304 | 56 200 |
| Рулевое управление | rulevoe-upravlenie | 2 383 | 27 212 |
| Тормозная система | tormoznaya-sistema | 2 736 | 39 673 |
| Электрооборудование | elektrooborudovanie | 13 715 | 146 883 |
| Коробки передач, сцепление | korobki-peredach-stseplenie | 6 165 | 67 286 |
| Кузов | kuzov | 5 480 | 57 564 |
| Шины / Диски | shiny-diski | 1 262 | 18 866 |
| ГСМ | goryuche-smazochnye-materialy | 606 | 15 286 |
| Разное | raznoe | 3 359 | 35 918 |
| Гараж / инструменты | garazh-instrumenty | 471 | 9 630 |
| Автосигнализации | avtosignalizatsii-i-zaschita-ot-ugona | 1 431 | 13 763 |
| Сервисы, дилеры | servisy-ofitsialnye-dilery | 1 474 | 13 244 |
| Тюнинг | tyuning | 1 695 | 41 043 |
| Автозвук | avtozvuk | 2 514 | 46 462 |
| Автоэлектроника | avtomobilnaya-elektronika-i-aksessuary | 36 | 1 740 |
| Наши машины | nashi-mashiny | 460 | 66 809 |
| Оперативные вопросы | operativnye-voprosy-tehnicheskie | 1 677 | 31 579 |
| Документация по VW | dokumentatsiya-po-volkswagen | 1 413 | 9 396 |
| Модели VW | volkswagen | 41 | 248 |
| Skoda | skoda | 17 | 59 |
| Электромобили VAG | electric-cars | 21 | 108 |
| Отзывы, выбор, покупка | otzyvy-vybor-pokupka-avtomobilya | 2 190 | 56 837 |
| Покупка/продажа авто | pokupka-i-prodazha-avtomobiley | 89 | 1 978 |
| Отчёты об эксплуатации | otchety-o-ekspluatatsii-avtomobiley | 38 | 1 298 |
| Покупка/продажа запчастей | pokupka--prodazha-zapchastey | 122 | 1 348 |
| Отзывы о магазинах | otzyvy-o-magazinah-zapchastey-razborkah | 427 | 4 261 |
| Барахолка | baraholka | 18 | 38 |
| ГАИ и законодательство | gai-i-zakonodatelstvo | 1 564 | 24 634 |
| Дороги, поездки | dorogi-poezdki-nashi-puteshestviya | 454 | 11 895 |
## Скрипт (пакет Python)
### Структура
```
vwts_scraper/
├── __init__.py # package
├── __main__.py # CLI entry point
├── config.py # константы (DELAY, TIMEOUT, HEADERS)
├── fetch.py # HTTP GET с ретраями
├── paginate.py # page_count + HEAD-проверка границ
├── parse.py # парсинг HTML (темы, посты, теги)
├── state.py # state.json (per-section)
├── output.py # JSONL с ротацией
└── run.py # главный цикл обхода
```
### Запуск
```bash
python -m vwts_scraper https://vwts.ru/forum/vag/benzinovye-dvigateli/
```
### Пауза / продолжение
- Ctrl+C — пауза, состояние сохраняется в `vwts_data/{slug}/state.json`
- Повторить команду — продолжит с места остановки
- Разные разделы не конфликтуют (у каждого своя папка + state.json)
### Вывод
- `vwts_data/{slug}/part_0001.jsonl`, `part_0002.jsonl`... — по 100 тем в файле
- Формат строки JSONL:
```json
{
"section": "Диагностика",
"section_slug": "diagnostika",
"topic_id": 253735,
"topic_title": "ошибка 00513. Заглох Passat B3 VR6",
"topic_url": "https://vwts.ru/forum/topic/253735/",
"total_posts": 98,
"posts": [
{"author": "Wizard13", "date": "2026-05-27T10:00:00", "num": "#1", "text": "...", "tags": ["passat b3", "vr6"]},
...
],
"scraped_at": "2026-06-03T20:30:00"
}
```
## Оценка времени
- Задержка между запросами: 1.5 сек
- В среднем 2 запроса на тему (список + посты)
- ~120 000 запросов → ~50 часов чистого времени
- Реально с учётом ошибок/повторов: ~3-5 дней
## Resume (продолжение с места остановки)
- state.json хранит какие разделы завершены и какие темы обработаны
- При перезапуске пропускает готовые темы и разделы
- Данные дописываются в существующие JSONL-файлы (append)
## Для RAG
Каждый пост — отдельный chunk с метаданными:
- `section` — раздел форума
- `topic_title` — название темы
- `tags` — теги темы
- `author` — автор
- `date` — дата
- `text` — содержимое поста
Можно индексировать в любую векторную БД (Chroma, Qdrant и т.д.).
+80
View File
@@ -0,0 +1,80 @@
# Анализ зарубежных VAG-форумов для парсинга
Дата: 2026-06-04
## Проверенные форумы
### 1. vwforum.com (VW общий)
- Адрес: https://www.vwforum.com/
- Движок: XenForo (кастомная сборка XenForo Cloud)
- Постов: ~465K, участников: ~84K
- Доступ из РФ: ✅ (открывается, но нестабильно)
**Проблемы:**
- ❌ Пагинация разделов отсутствует — показываются только последние темы
- ❌ HTTP 406 (Not Acceptable) на `page-2` — пагинация отключена на сервере
- ❌ После 2–3 запросов — Read timeout (защита от парсинга)
- ❌ Невозможно получить список ВСЕХ тем раздела
### 2. audiforum.us (Audi)
- Адрес: https://www.audiforum.us/
- Движок: XenForo (та же кастомная сборка, что и vwforum.com)
- Постов: ~105K, участников: ~15K
- Доступ из РФ: ✅
**Проблемы:** те же, что у vwforum.com (оба на одной платформе)
### 3. Другие (недоступны из РФ)
| Форум | Причина |
|---|---|
| vwvortex.com | Cloudflare |
| forums.tdiclub.com | Cloudflare |
| briskoda.net | Cloudflare |
| vwaudiforum.co.uk | DNS не резолвится |
| volkswagenforum.co.uk | Таймаут |
| passatworld.com | Таймаут |
## Выводы
Совместимость с нашим скриптом определяется по двум критериям:
| Критерий | vwts.ru | vwforum.com / audiforum.us |
|---|---|---|
| Пагинация разделов (`div.pageNav`) | ✅ | ❌ (нет пагинации) |
| Доступность (не блокирует) | ✅ | ❌ (таямауты после 2-3 запросов) |
| `page_count()` работает | ✅ | ❌ |
| Полнота данных (все темы) | ✅ | ❌ (только последние) |
| Формат URL page-N | ✅ | ❌ (HTTP 406) |
**Рекомендация:** искать форумы с:
1. Классическим XenForo (не XenForo Cloud)
2. Полноценной пагинацией `div.pageNav`
3. Доступом без Cloudflare
4. Возможностью парсинга через requests (без JS)
5. Для phpBB — пагинация через `?start=N` (subsilver2 стиль)
Пример подходящих: vwts.ru (XenForo), нива-лада.рф (phpBB).
### Проверка немецких Mercedes-форумов (2026-06-04, с германской ВМ 95.179.252.111)
| Форум | Движок | Статус | Причина |
|-------|--------|--------|---------|
| benzworld.org | XenForo | ❌ 409 | `xf_is_suspected_bot=1` — бот-детекция, даже с DE IP |
| mercedes-benz-forum.com | — | ❌ | DNS не резолвится |
| mercedes-treff.de | — | ❌ | Таймаут (SSL handshake доходит, ответа нет) |
| motor-talk.de | React SPA | ❌ | CloudFlare + контент только через JS |
| mercedes-fans.de | Symfony | ❌ | Не форум, а онлайн-журнал |
| mercedesforum.de, mb-forum.de, forum.mb-passion.com и др. | — | ❌ | Не отвечают / DNS не резолвится |
**Итог:** доступных немецких форумов по Mercedes для парсинга не найдено.
benzworld.org — единственный крупный XenForo (7.9M постов), но блокирует даже с немецкого IP.
## Тесты page_count
| Тест | Результат |
|---|---|
| 50 страниц раздела (стр.1…113) | 0 ошибок ✅ |
| 50 тем (1–48 страниц) | 0 ошибок ✅ |
| Проблемная #138549 (139 стр) | Определена правильно |
| Проблемная #253565 (VCDS шнурок) | 1 стр (правильно) |
+27 -6
View File
@@ -16,20 +16,41 @@
| kianiroforum.com | Kia Niro (en) | XenForo | 🟡 | 79K сообщений, timeout |
| mercedes-* (все русские) | Mercedes (ru) | — | ❌ | Все мертвы |
| lada-* (все) | Lada | — | ❌ | Все домены мертвы |
| **нива-лада.рф/n/** | Lada/Niva/Chevy Niva | **phpBB** | ✅ | Крупный, ~1K+ тем в каждом разделе, очень активный |
| **lada.cc/board/** | Lada/ВАЗ | **Invision Power Board** | ✅ | Живой, есть пагинация, ~250KB страница |
| dricar.ru/forum5.html | Жигули классика | Кастом | 🟡 | Мелкий, кастомный, только классика |
| niva-chevy.ru | Niva Chevrolet | Статика | ❌ | Не форум, а руководство по ремонту |
| niva-club.su | Niva | Статика | ❌ | Не обновлялся с 2020 |
| chevrolet-niva-club.ru | Niva | — | ❌ | Не отвечает |
| ladacenter.ru/forum/ | Lada | — | ❌ | HTTP 400 |
| lada-vesta-club.ru | Lada | Cloudflare | ❌ | Cloudflare, не форум |
| kia-* (все русские) | Kia (ru) | — | ❌ | CloudFlare/недоступны |
| bmwclub.ru | BMW | — | ❌ | DDoS-Guard |
| motor-talk.de | VAG (de) | — | ❌ | CloudFlare |
| motor-talk.de | VAG (de) | React SPA | ❌ | React SPA + CloudFlare |
| toyota-club.net | Toyota (ru) | — | ❌ | 403 |
| vwvortex.com | VW (en) | Кастом | 🟡 | Есть темы, нет pageNav |
| vwforum.com | VW (en) | Кастом | 🟡 | Малый, не XenForo |
### Немецкие Mercedes-форумы (с германской ВМ)
| Форум | Движок | Доступ | Причина |
|-------|--------|--------|---------|
| **benzworld.org** | XenForo | ❌ 409 | `xf_is_suspected_bot=1` — бот-детекция |
| mercedes-benz-forum.com | — | ❌ | DNS не резолвится |
| mercedes-treff.de | — | ❌ | Таймаут |
| motor-talk.de | React SPA | ❌ | CloudFlare + React |
| mercedes-fans.de | Symfony | ❌ | Не форум, а журнал |
| mercedesforum.de, mb-forum.de и др. | — | ❌ | Не отвечают |
## Выводы
1. **XenForo с открытым доступом — vwts.ru (работает) и benzworld.org (timeout с РФ).** Остальные либо под защитой, либо мёртвы.
2. benzworld.org (XenForo, 7.9M сообщений) — возможно доступен через прокси/VPN
3. **Живые форумы на других движках** — потребуют отдельных парсеров:
- phpBB (`viewtopic.php`) — lexus-club.ru
1. **XenForo с открытым доступом — vwts.ru (работает).** Остальные либо под защитой, либо мёртвы.
2. benzworld.org (XenForo, 7.9M сообщений) — блокирует парсинг (HTTP 409) даже с немецкого IP.
3. **Основной новый источник — нива-лада.рф (phpBB).** Крупный, живой, без CloudFlare. Есть парсер в `lada_scraper/`.
4. **Второстепенный — lada.cc/board/ (IPB).** Требует отдельного парсера под Invision Power Board.
5. **Живые форумы на других движках** — потребуют отдельных парсеров:
- phpBB (`viewtopic.php`) — нива-лада.рф ✅ (парсер готов), lexus-club.ru
- vBulletin (`forumdisplay.php`) — renault-club.ru
- Invision Power Board (`ipsPagination`) — ffclub.ru
- Invision Power Board (`ipsPagination`) — ffclub.ru, lada.cc
3. **Англоязычные Kia-форумы** — крупные (kia-forums.com, 741K сообщений), но сабфорумы не грузятся с нашего IP (возможно гео- или CDN-ограничение).
4. **Российские автофорумы массово под CloudFlare/DDoS-Guard** — парсинг через requests невозможен.