lada_scraper: парсер phpBB форума нива-лада.рф + доку
This commit is contained in:
+141
@@ -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 и т.д.).
|
||||
Reference in New Issue
Block a user