3.0 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 — никакой логики обхода
- Каждый адаптер — отдельный пакет, можно добавить новый движок создав один пакет
- Все решения по вёрстке документированы в комментариях перед функциями
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 отфильтровано).