Files
LLM-UI/lada_scraper/README.md
T

107 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Парсер 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<ID>/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)