- 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-тем при многопоточном парсинге
2.1 KiB
2.1 KiB
История изменений — 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.pageNavparse.py—div.structItem,article.message,li.tagItemadapter.py— подстановка параметров
-
scraper/forums/phpbb/ — адаптер для phpBB (нива-лада.рф)
paginate.py—?start=N,ul.paginationparse.py—a.topictitle,div.postbody,b.postauthoradapter.py— подстановка параметров
-
scraper/__main__.py — точка входа CLI
Принципы
core/ничего не знает про движок форума — работает через абстракциюBaseAdapter- Адаптер реализует только парсинг HTML и формирование URL — никакой логики обхода
- Каждый адаптер — отдельный пакет, можно добавить новый движок создав один пакет
- Все решения по вёрстке документированы в комментариях перед функциями