ShopParser — парсер маркетплейсів
Desktop-застосунок для структурованого та контрольованого парсингу товарів із маркетплейсів із підтримкою preview, експорту, throttling та відновлення сесій.
Огляд
ShopParser — це Windows desktop-застосунок для структурованого та контрольованого парсингу товарних каталогів маркетплейсів.
Програма орієнтована на побудову безпечного workflow збору даних, дозволяючи:
- переглядати результати парсингу перед запуском;
- налаштовувати поля експорту;
- запускати throttled crawling;
- експортувати результати;
- відновлювати перервані сесії з checkpoint-стану.
Архітектура проекту спочатку проектувалася як extensible-система з підтримкою окремих marketplace adapters для різних платформ.
Контекст
Проект виник із потреби спростити структурований збір та експорт даних маркетплейсів для:
- аналізу каталогів;
- підготовки імпорту;
- синхронізації товарів;
- автоматизації обробки даних.
Основними вимогами були:
- контрольоване та “polite” crawling-поведінка;
- configurable exports;
- підтримка marketplace-specific полів;
- preview перед запуском повного crawl;
- робота з великими каталогами;
- можливість відновлення перерваних сесій.
Окремий акцент був зроблений на модульності архітектури для майбутнього підключення нових маркетплейсів.
Відповідальність
У межах проекту були реалізовані:
- загальна архітектура системи;
- crawl engine;
- архітектура marketplace adapters;
- desktop UI;
- export subsystem;
- throttling та retry logic;
- checkpoint/resume workflow;
- проектування моделей даних;
- підготовка extensibility для майбутніх інтеграцій.
Рішення
Рішення реалізоване як WPF desktop-застосунок із модульною adapter-based архітектурою.
Користувач може:
- вказати URL магазину;
- переглянути preview результатів;
- обрати поля експорту;
- налаштувати формат результатів;
- запускати повний crawl;
- відновлювати перервані сесії.
Система підтримує marketplace-specific логіку експорту та ізольовані parsing workflows при спільній crawl-інфраструктурі.
Особлива увага приділялася “polite crawling”:
- затримкам між запитами;
- retry intervals;
- jitter/randomization;
- контрольованому HTTP-навантаженню.
Технічні деталі
Стек
- C#
- .NET
- WPF
- AngleSharp
- HttpClient
- ClosedXML
- System.Text.Json
Архітектура
Проект складається з декількох основних шарів:
- crawl engine;
- marketplace adapters;
- export subsystem;
- UI workflow layer;
- data models.
Інтеграції маркетплейсів реалізуються через спільний adapter interface, що дозволяє додавати нові платформи без зміни core-системи.
Функціональність
Реалізовано:
- preview marketplace pages;
- throttled crawling;
- вибір export fields;
- CSV export;
- JSONL export;
- XLSX export;
- checkpoint-based resume;
- retry та delay management;
- structured logging;
- marketplace-specific export presets.
Поточна реалізація орієнтована на:
- Rozetka;
- Prom.ua.
Виклики
Основними викликами були:
- проектування marketplace-agnostic архітектури;
- баланс між extensibility та простотою;
- робота з нестабільною структурою marketplace pages;
- реалізація “polite crawling”;
- підтримка resumable long-running sessions;
- організація export schemas для різних платформ.
Окремим викликом була підготовка архітектури до майбутнього розширення без жорсткого coupling parsing-логіки до конкретних сайтів.
Результат
Проект успішно продемонстрував:
- модульну архітектуру marketplace parsing;
- reusable crawl infrastructure;
- desktop-oriented parsing workflow;
- configurable export pipelines;
- checkpoint-based session recovery;
- scalable adapter-oriented system design.
Отримана архітектура може використовуватися як основа для майбутніх automation та catalog-processing рішень.
Медіа
Галерея містить:
- приклади preview workflow;
- налаштування експорту;
- журнали crawling-процесу;
- приклади експортованих даних.
Примітки
- Навчальний/prototype-oriented проект.
- Частина marketplace-specific логіки може бути спрощена або прихована.
- Архітектура орієнтована на подальше розширення.
- Основний акцент зроблено на контрольованому та “polite” crawling.