- 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-тем при многопоточном парсинге
33 lines
2.1 KiB
Markdown
33 lines
2.1 KiB
Markdown
# История изменений — 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 — никакой логики обхода
|
|
- Каждый адаптер — отдельный пакет, можно добавить новый движок создав один пакет
|
|
- Все решения по вёрстке документированы в комментариях перед функциями
|