Парсинг Ozon: Playwright + Crawlee
Почему именно Playwright + Crawlee
Playwright
Playwright — это браузерная автоматизация от Microsoft. Он запускает настоящий Chromium, Firefox или WebKit и видит страницу так же, как обычный пользователь.
Для Ozon это критично, потому что:
- большая часть данных догружается JavaScript
- многие запросы выполняются после открытия страницы
- часть информации приходит через внутренние API
- простого requests + BeautifulSoup часто недостаточно
Playwright
↓
Открывает страницу товара
↓
Ждет рендер React
↓
Получает DOM
↓
Извлекает данные
Crawlee
Crawlee — это уже не браузер, а фреймворк для краулинга. Он умеет:
- управлять очередями URL
- масштабировать воркеры
- хранить результаты
- обрабатывать ошибки
- делать ретраи
- распределять нагрузку
Playwright = двигатель
Crawlee = вся инфраструктура вокруг двигателя
Архитектура промышленного парсера Ozon
┌─────────────┐
│ Scheduler │
└──────┬──────┘
│
▼
┌─────────────┐
│ URL Queue │
└──────┬──────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Worker 1 │ │ Worker 2 │ │ Worker N │
│ Playwright │ │ Playwright │ │ Playwright │
└─────┬──────┘ └─────┬──────┘ └─────┬──────┘
│ │ │
▼ ▼ ▼
Ozon Ozon Ozon
│ │ │
└──────┬───────┴───────┬──────┘
▼ ▼
PostgreSQL / ClickHouse
│
▼
Analytics/API
Какие данные реально собирать
Карточка товара
{
"sku": "123456",
"title": "Ноутбук Lenovo",
"price": 74990,
"old_price": 89990,
"rating": 4.8,
"reviews": 1523,
"seller": "ООО Ромашка",
"brand": "Lenovo",
"stock": true
}
Категории
Ноутбуки
Телефоны
Телевизоры
Кроссовки
Автотовары
По каждой категории можно проходить все страницы.
Отзывы
Можно собирать:
- Автор
- Дата
- Оценка
- Текст
- Фото
Продавцы
Из карточек можно получать:
- Название
- Рейтинг
- Количество товаров
- Количество отзывов
Как обычно ищут товары
Вариант 1: Поиск по запросу
ноутбук
iphone
наушники
Парсер проходит: /search?text=iphone
Вариант 2: Через категории
Электроника
└─ Телефоны
└─ Смартфоны
Вариант 3: Через внутренние API сайта
Самый производительный вариант.
Playwright открывает страницу
↓
Смотрим Network
↓
Находим XHR запросы
↓
Повторяем их напрямую
Это обычно дает прирост производительности в десятки раз.
Инфраструктура для небольшого проекта
Сервер
8 CPU
16 GB RAM
Например:
- VPS Hetzner
- VPS OVH
- VPS Timeweb Cloud
База данных
PostgreSQL с таблицами:
products
prices
reviews
sellers
Очередь
Redis для:
- URL очередь
- ретраи
- распределение задач
Инфраструктура для большого проекта
Docker
Каждый воркер в контейнере:
worker-1
worker-2
worker-3
worker-100
Kubernetes
Автомасштабирование:
10 воркеров
↓
нагрузка выросла
↓
50 воркеров
ClickHouse
Для аналитики лучше PostgreSQL. Пример:
цены за последние 6 месяцев
по миллионам товаров выполняются очень быстро.
Прокси
| Тип | Описание | Использование |
|---|---|---|
| Datacenter | Самые дешевые | низкая нагрузка |
| Residential | IP обычных пользователей | массовый сбор |
| Mobile | Самые дорогие | особо строгая защита |
Антидетект
Playwright + Дополнения
Часто дополнительно используют:
playwright-extra
stealth plugin
Что скрывается:
- navigator.webdriver
- canvas fingerprint
- webgl fingerprint
- timezone
- locale
Мониторинг
Prometheus
Метрики:
- запросы в минуту
- ошибки
- бан-рейт
Grafana
Дашборды. Можно видеть:
- товаров обработано
- среднее время страницы
- ошибки
Рекомендуемый стек
Для проекта уровня «анализ всего Ozon»
Node.js
Playwright
+
Crawlee
Redis
PostgreSQL
Docker
Prometheus
Grafana
Для действительно больших объемов
Node.js
Playwright
+
Crawlee
Redis
ClickHouse
Docker
Kubernetes
Residential Proxies
Prometheus
Grafana