| src | 1 day ago | ||
| .gitignore | 1 day ago | ||
| Dockerfile | 1 day ago | ||
| README.md | 1 day ago | ||
| TECH_SPEC.md | 1 day ago | ||
| requirements.txt | 1 day ago | ||
Парсер оголошень нерухомості з dom.ria.com/uk для локального сервісу data_collector.
# Встановлення залежностей python -m venv .venv source .venv/bin/activate pip install -r requirements.txt # Dry-run (без відправки в data_collector) python -m src.main --city kiev --category 1 --operation sale --max-pages 1 --dry-run # Реальний запуск (1 сторінка) python -m src.main --city kiev --category 1 --operation sale --max-pages 1 # Всі міста, всі категорії, всі операції (довгий! python -m src.main
| Параметр | Опис |
|---|---|
--city |
Slug міста (можна декілька). За замовчуванням — всі. |
--category |
ID категорії: 1=квартири, 2=будинки, 3=земля, 4=комерція, 5=гаражі. |
--operation |
sale, rent, rent_daily. За замовчуванням — всі. |
--max-pages |
Обмеження кількості сторінок каталогу на один target. |
--dry-run |
Парсити, але не відправляти в data_collector і не писати в SQLite. |
--db |
Шлях до SQLite БД для resume (domria_resume.db). |
--collector-url |
URL data_collector (http://localhost:8020). |
src/ ├── config.py # URL-патерни, міста, категорії, ліміти швидкості ├── session.py # curl_cffi Session з impersonate + cookies ├── parser.py # Витягування __INITIAL_STATE__ з HTML ├── normalizer.py # Нормалізація raw DOM.RIA → payload data_collector ├── collector.py # HTTP-клієнт для POST /api/v1/ingest ├── storage.py # SQLite resume / deduplication ├── crawler.py # Основний цикл: каталог → деталі → ingest └── main.py # CLI entry point
impersonate="chrome124" — єдиний робочий спосіб обходу анти-боту DOM.RIA./{operation}-{type}/{city}/?page=N (напр. /prodazha-kvartir/kiev/?page=1).docker build -t domria-parser . docker run --rm --network host domria-parser --city kiev --category 1 --max-pages 1 --dry-run
Внутрішній проєкт VMK.