# Парсер phpBB-форума Нива Лада Клуб Парсер для форума [нива-лада.рф](https://нива-лада.рф/n/) (phpBB, subsilver2). Предназначен для создания RAG-базы знаний по ремонту Lada Niva / Chevrolet Niva / ВАЗ. ## Источник - **Сайт:** https://нива-лада.рф/n/ - **Движок:** phpBB + Board3 Portal - **Стиль:** subsilver2 (табличная вёрстка) - **Разделы:** ~20 технических разделов (двигатель, ходовая, электрика, кузов и т.д.) - **Доступ:** ✅ открыт, без CloudFlare ## Разделы форума | ID | Название | Описание | |----|----------|---------| | 21 | Двигатель | Категория с подразделами | | 22 | Двигатель: механика и ЭСУД | ~1849 тем, ~84K сообщений | | 23 | Система смазки | | | 24 | Система охлаждения | | | 25 | Система питания | | | 26 | Система выпуска | | | 27 | Система зажигания | | | 28 | Трансмиссия | | | 29 | Коробка передач | | | 30 | Ходовая часть | | | 31 | Тормозная система | | | 32 | Рулевое управление | | | 33 | Кузов и салон | | | 34 | Электрооборудование | | | 35 | Отопление и кондиционирование | | | 150 | Ремонт и ТО | Категория с подразделами | | 104 | Флуд | | | 114 | Ура! Купил Ниву | ~1151 страница | | 17 | Дилеры и сервисы | | ## Структура пакета ``` lada_scraper/ ├── __init__.py # package ├── __main__.py # CLI entry point ├── config.py # константы, карта разделов, URL форума ├── fetch.py # HTTP GET с ретраями ├── paginate.py # phpBB пагинация (?start=N) ├── parse.py # парсинг HTML subsilver2 (темы, посты) ├── state.py # state.json (пауза/продолжение) ├── output.py # JSONL с ротацией (100 тем/файл) ├── throttle.py # координация задержек, автоопределение бана ├── run.py # главный цикл (ThreadPoolExecutor) └── README.md # этот файл ``` ## Использование ```bash # Список разделов python3 -m lada_scraper --list # Запуск парсинга раздела python3 -m lada_scraper 22 # Двигатель: механика и ЭСУД python3 -m lada_scraper 150 --workers 8 # Ремонт и ТО, 8 потоков python3 -m lada_scraper 23 --no-delay # без задержек (если не банит) # Пауза: Ctrl+C → состояние сохраняется # Продолжить: та же команда ``` ## Формат вывода Данные сохраняются в `lada_data/f/part_*.jsonl`: ```json { "section": "Система смазки", "section_id": 23, "topic_id": 12345, "topic_title": "Замена масла в двигателе", "topic_url": "https://xn----7sbbagpx1an.xn--p1ai/n/viewtopic.php?f=23&t=12345", "total_posts": 15, "posts": [ { "author": "Glu777", "date": "12 авг 2025, 20:00", "num": "#1", "text": "текст сообщения..." } ], "scraped_at": "2026-06-04T11:30:00" } ``` ## Особенности парсинга - **Пагинация:** phpBB использует `?start=N` где N = (page-1) * items_per_page - **Темы:** 25 на страницу раздела - **Посты:** 10 на страницу темы - **HTML:** subsilver2 (табличная вёрстка) — `b.postauthor`, `div.postbody` - **Ротация:** 100 тем на один JSONL-файл ## Resume - `state.json` хранит какие темы обработаны - При перезапуске пропускает готовые темы - Данные дописываются в существующие JSONL-файлы (append)