Files
LLM-UI/scraper/history/001-initial-structure.md

51 lines
3.0 KiB
Markdown
Raw Permalink 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.
# История изменений — scraper/
## 001 — 2026-06-06: Начальная структура
### Создано
- **scraper/core/** — общий слой, независимый от движка форума
- `fetch.py` — HTTP GET с ретраями, автоопределение бана
- `throttle.py` — координация задержек между потоками
- `output.py` — запись JSONL, ротация по N тем
- `state.py` — сохранение/восстановление состояния (пауза/продолжение)
- `runner.py` — ThreadPoolExecutor, единый цикл обхода через адаптер
- **scraper/forums/base.py** — абстрактный базовый класс адаптера форума
- Единый интерфейс: `count_pages()`, `parse_topics()`, `parse_posts()`, `page_url()`, `topic_url()`
- **scraper/forums/xenforo/** — адаптер для XenForo (vwts.ru)
- `paginate.py``/page-N`, `div.pageNav`
- `parse.py``div.structItem`, `article.message`, `li.tagItem`
- `adapter.py` — подстановка параметров
- **scraper/forums/phpbb/** — адаптер для phpBB (нива-лада.рф)
- `paginate.py``?start=N`, `ul.pagination`
- `parse.py``a.topictitle`, `div.postbody`, `b.postauthor`
- `adapter.py` — подстановка параметров
- **scraper/__main__.py** — точка входа CLI
### Принципы
- `core/` ничего не знает про движок форума — работает через абстракцию `BaseAdapter`
- Адаптер реализует только парсинг HTML и формирование URL — никакой логики обхода
- Каждый адаптер — отдельный пакет, можно добавить новый движок создав один пакет
- Все решения по вёрстке документированы в комментариях перед функциями
---
## 002 — 2026-06-06: Фикс sticky-тем phpBB
**Проблема:** В phpBB закреплённые (sticky) темы видны на каждой странице раздела.
При многопоточном парсинге (4 workers) все потоки одновременно хватают одну и ту же
sticky-тему — скрипт зависает.
**Решение:** В `parse_topics()` добавлен фильтр — перед добавлением темы проверяем,
есть ли в родительском `<tr>` иконка `sticky_read.gif`.
Sticky-темы пропускаются (не попадают в список).
**Где:** `lada_scraper/parse.py` (на ВМ, через SSH)
**Проверено:** sticky #331 и #477 не попадают в выдачу, обычные темы на месте.
**Было/стало:** 28 тем → 24 темы на странице (4 sticky отфильтровано).
---