2,8 млн
товаров / день
Устойчивая пропускная способность пула воркеров на пике.
Кейс · Данные
Распределённый скрапинг с обходом антибота и ротацией прокси: следит за ценами и остатками по миллионам SKU и отдаёт чистые данные через API и в PostgreSQL по расписанию.
Нужно было видеть цены и остатки конкурентов по всему ассортименту — в реальном времени, а не раз в неделю руками.
Каталог маркетплейса — это миллионы SKU, которые меняются ежеминутно: цена, скидка, наличие, рейтинг. Готовые сервисы отдавали данные с задержкой в сутки и по верхушке категорий, а наивный скрапер упирался в антибот, капчу и блокировки по IP уже на первых тысячах запросов.
Требовался пайплайн, который держит миллионы товаров в день, не падает под блокировками, отдаёт чистые валидные данные и обновляет их достаточно часто, чтобы на них можно было строить цены и закупки.
Планировщик ставит задачи, пул воркеров параллельно собирает страницы через ротацию прокси, парсер-валидатор приводит всё к единой схеме, чистые данные ложатся в PostgreSQL и S3 и отдаются через API.
Планировщик на Airflow раскладывает каталог на пачки задач и кладёт их в очередь Redis. Пул воркеров разбирает очередь параллельно: лёгкие страницы тянет Scrapy, JS-тяжёлые — Playwright с обходом антибота, и каждый запрос уходит через ротацию прокси, чтобы не упереться в блокировки. Пул автоматически масштабируется под объём очереди.
Сырой HTML проходит парсер-валидатор: данные извлекаются, приводятся к единой схеме, дедуплицируются и проверяются — мусор и аномалии цены/остатка отсекаются (отсюда <0,3% ошибок). Битые задачи возвращаются в очередь на повтор. Чистые строки ложатся в PostgreSQL как актуальное состояние, сырьё и снапшоты — в S3, а наружу всё отдаётся через API. Весь конвейер упакован в Docker.
Что показывает пайплайн в продакшене.
2,8 млн
товаров / день
Устойчивая пропускная способность пула воркеров на пике.
99,5%
uptime
Блокировки и сбои гасятся ретраями и ротацией прокси — пайплайн не падает.
<0,3%
ошибок парсинга
Валидация по схеме отсекает мусор и аномалии цены и остатка.
5 мин
свежесть данных
Горячие категории переобходятся по короткому циклу — данные почти в реальном времени.
Airflow по расписанию раскладывает каталог на пачки задач — категории и списки SKU — и кладёт их в очередь Redis.
Пул воркеров разбирает очередь одновременно: Scrapy — лёгкие страницы, Playwright — JS-тяжёлые с обходом антибота. Каждый запрос идёт через ротацию прокси.
Сырой HTML превращается в структурированные строки: единая схема, дедупликация, проверка цены и остатка. Аномалии и мусор отсекаются, битые задачи уходят на повтор.
Чистые строки пишутся в PostgreSQL как актуальное состояние цен и остатков, а сырьё и снапшоты складываются в S3 для истории и переразбора.
Наружу данные уходят через REST-API, выгрузки-фиды и вебхуки на изменение цены или наличия — горячие категории обновляются примерно раз в 5 минут.
Соберу парсер или пайплайн данных под вашу задачу — от обхода антибота до чистого API в проде.