scraper: новая архитектура — core/ + forums/ (BaseAdapter, XenForo, phpBB)
- core/ — общий слой: fetch, throttle, output, state, runner - forums/base.py — абстрактный BaseAdapter - forums/xenforo/ — адаптер для XenForo (vwts.ru) - forums/phpbb/ — адаптер для phpBB (нива-лада.рф) - __main__.py — точка входа CLI - history/001-initial-structure.md — журнал изменений Также на ВМ (не в этом коммите): - lada_scraper/parse.py — пропуск sticky-тем при многопоточном парсинге
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# История изменений — 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 — никакой логики обхода
|
||||
- Каждый адаптер — отдельный пакет, можно добавить новый движок создав один пакет
|
||||
- Все решения по вёрстке документированы в комментариях перед функциями
|
||||
Reference in New Issue
Block a user