Files
LLM-UI/lada_scraper/README.md
T

4.3 KiB
Raw Blame History

Парсер phpBB-форума Нива Лада Клуб

Парсер для форума нива-лада.рф (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          # этот файл

Использование

# Список разделов
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:

{
  "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)