title>Парсинг Ozon: Playwright + Crawlee

Парсинг Ozon: Playwright + Crawlee

Важно: Сбор данных с Ozon без Seller API требует браузерной автоматизации и обхода антибот-защиты.

Почему именно 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
Важно: Самая эффективная стратегия — через Playwright обнаружить внутренние JSON/XHR-запросы, после чего максимально перейти на прямое получение данных через те же запросы. Это резко снижает стоимость инфраструктуры и повышает скорость сбора.