Skip to content

KalmikOF/Ozon-review-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛒 Ozon Review Parser

Профессиональный парсер отзывов с медиа-вложениями с маркетплейса Ozon.

Python Selenium


Введение

Данный парсер разработан специально для сбора отзывов с медиа-вложениями (фото и видео) с товаров маркетплейса Ozon.ru.

Ключевые особенности:

  • ✅ Сбор только отзывов с фото/видео
  • ✅ Многопоточный парсинг (до 10 браузеров одновременно)
  • ✅ Поддержка HTTP/SOCKS5 прокси с авторизацией
  • ✅ Система обхода антибот-защиты Ozon
  • ✅ Графический интерфейс для удобной настройки
  • ✅ Экспорт данных в JSON формате

Что собирает парсер:

  • Автор отзыва
  • Дата публикации
  • Рейтинг (количество звёзд)
  • Текст отзыва
  • Фотографии (высокое разрешение)
  • Видео (прямые ссылки)

Интерфейс

Главное окно

image

Настройка прокси

image

Процесс парсинга

image

📋 Требования

  • Python: 3.11 или 3.12 (рекомендуется)
  • Google Chrome: последняя версия
  • ОС: Windows / Linux / macOS
  • ОЗУ: минимум 4 GB (рекомендуется 8 GB)
  • Место на диске: 500 MB для профилей браузеров

🔧 Установка

Шаг 1: Скачайте проект

git clone https://github.com/KalmikOF/ozon-review-parser.git
cd ozon-review-parser

Или скачайте ZIP-архив и распакуйте все файлы в одну папку.

Шаг 2: Создайте виртуальное окружение (можно делать без venv, как только перенесли все файлы в 1 папку устанавливайте зависимоти и запускайте gui)

# Создание venv
python -m venv venv

# Активация (Windows)
venv\Scripts\activate

# Активация (Linux/macOS)
source venv/bin/activate

Шаг 3: Установите зависимости (на windows та же команда)

pip install -r requirements.txt

Важно: При возникновении ошибок смотрите раздел Решение проблем.


🚀 Быстрый старт

1. Подготовьте файл с ссылками

Создайте текстовый файл urls.txt со ссылками на товары:

https://www.ozon.ru/product/shveynaya-mashina-janome-225388851/
https://www.ozon.ru/product/noutbuk-lenovo-ideapad-123456789/
https://www.ozon.ru/product/iphone-15-pro-max-987654321/

2. Запустите GUI парсер

python ozon_gui.py

3. Настройте параметры

  1. Выберите файл с URL - нажмите "📁 Browse" и укажите urls.txt
  2. Количество браузеров - рекомендуется 5 (можно 1-10)
  3. Очистка cookies - оставьте включенным ✅
  4. Прокси - настройте при необходимости (см. ниже)

4. Запустите парсинг

Нажмите 🚀 START PARSING и наблюдайте за процессом в логе. (если выбираете Proxy rotation при запуске,разверните gui на весь экран,кнопка за раики окна убегает,баг визуала)

5. Получите результаты

Результаты сохраняются в папку results/ в формате JSON.

Нажмите 📂 OPEN RESULTS для открытия папки с результатами.


⚙️ Настройка прокси

Без прокси (для малых объёмов)

Используйте свой IP - лучший вариант для 10-50 товаров.

💡 Рекомендация: Раздайте интернет с телефона на компьютер для максимальной стабильности.

Одна прокси (Single Proxy)

Используйте одну прокси на все браузеры:

Режим: Single proxy
Proxy: socks5://username:password@proxy.com:8080

Поддерживаемые форматы:

  • http://proxy.com:8080
  • http://user:pass@proxy.com:8080
  • socks5://proxy.com:1080
  • socks5://user:pass@proxy.com:1080

Ротация прокси (Proxy Rotation)

Для массового парсинга (500+ товаров) используйте пул прокси.

Создайте файл proxies.txt:

socks5://user1:pass1@proxy1.com:8080
socks5://user2:pass2@proxy2.com:8080
socks5://user3:pass3@proxy3.com:1080
http://user4:pass4@proxy4.com:3128

Настройки в GUI:

  1. Выберите "Proxy rotation"
  2. Нажмите "📝 Load proxies from file"
  3. Укажите файл proxies.txt
  4. Change every: 5 (менять прокси каждые 5 товаров)
  5. Mode: random (случайный выбор)

🐛 Возможные проблемы и решения

1. Проблемы с прокси

Проблема: Массовый парсинг требует мобильные прокси

Датацентровые прокси (например, с https://proxy6.net/ или https://proxyline.net/) работают плохо при массовом парсинге.

✅ Решение:

Для массового сбора (1000+ карточек товаров):

  • Используйте мобильные прокси (4G/LTE)

Для небольших объёмов (до 50 товаров):

  • Работайте со своего IP
  • Лучше всего: раздайте интернет с телефона на компьютер

2. Капча и фрод профилей

Проблема: Профиль браузера получает капчу или фрод

Признаки:

  • Парсер останавливается
  • В логе ошибки
  • Браузер показывает капчу

✅ Решение:

Шаг 1: Остановите парсер (⏹ STOP)

Шаг 2: Удалите проблемный профиль:

Папка - chrome_profile_ozon_browser_номер профиля

удаляйте её целиком

Шаг 3: Перезапустите парсер - будет создан чистый профиль.

Профилактика:

  • ✅ Включите Clear cookies (по умолчанию)
  • ✅ Меняйте прокси чаще (каждые 3-5 товаров)
  • ✅ Уменьшите браузеры до 2-3 при проблемах

3. Ошибки установки зависимостей

No module named 'pkg_resources'

pip install setuptools==69.5.1

No module named 'blinker._saferef'

pip install blinker==1.7.0

❌ Виртуальное окружение не создаётся

Решение: Установите глобально (без venv):

pip install -r requirements.txt
python ozon_gui.py

4. Парсер не собирает отзывы (Collected: 0)

Проблема: Collected: 0 reviews

Возможные причины:

  1. У товара нет медиа-отзывов

    • Парсер собирает только отзывы с фото/видео
    • Проверьте товар вручную
  2. Озон изменил структуру

    • Обраититест ко мне для фикса
  3. Проблемы с прокси

    • Попробуйте без прокси
    • Смените прокси

🔐 Техническая информация

Как работает система обхода антибот-защиты Ozon

Озон использует многоуровневую систему защиты от ботов. Вот как парсер её обходит:

1. Детекция браузерной автоматизации

Что проверяет Озон:

  • Флаг navigator.webdriver
  • JavaScript-окружение
  • Automation-флаги Chrome

Наш обход:

// Скрываем webdriver
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

// Отключаем automation-флаги
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])

2. Фингерпринтинг браузера

Что проверяет Озон:

  • Canvas fingerprinting
  • WebGL fingerprinting
  • Установленные шрифты
  • Разрешение экрана

Наш обход:

  • Изолированные профили браузеров
  • Блокировка WebRTC (утечка IP)
  • Блокировка геолокации
  • Отключение уведомлений

3. Поведенческий анализ

Что проверяет Озон:

  • Скорость кликов
  • Паттерны навигации
  • Время на странице

Наш обход:

  • Задержки: time.sleep(1.5-3)
  • Естественная навигация
  • Случайные интервалы

4. IP-репутация

Что проверяет Озон:

  • Тип IP (датацентр/резидент/мобильный)
  • Количество запросов с IP
  • Блеклист IP

Наш обход:

  • Ротация прокси
  • Очистка cookies
  • Изоляция профилей
  • Мобильные прокси (лучшая репутация)

5. TLS Fingerprinting

Что проверяет Озон:

  • TLS/SSL handshake
  • Cipher suites
  • Тип клиента

Наш обход:

seleniumwire_options = {
    'verify_ssl': False,
    'suppress_connection_errors': True
}

Архитектура парсера

┌─────────────────────────────────────┐
│      GUI (ozon_gui.py)              │
│   Tkinter интерфейс                 │
└─────────────┬───────────────────────┘
              │
              ↓
┌─────────────────────────────────────┐
│    Пул браузеров (5 потоков)       │
│  ┌────────┐ ┌────────┐ ┌────────┐  │
│  │Browser│ │Browser│ │Browser│    │
│  │  #0   │ │  #1   │ │  #2   │ ...│
│  └────────┘ └────────┘ └────────┘  │
└─────────────┬───────────────────────┘
              │
              ↓
┌─────────────────────────────────────┐
│    Очередь задач (Queue)            │
│    URL1 → URL2 → URL3 → ...         │
└─────────────┬───────────────────────┘
              │
              ↓
┌─────────────────────────────────────┐
│    Парсинг отзывов (JS)             │
│  • data-review-uuid поиск           │
│  • Извлечение данных                │
│  • Сбор медиа                       │
└─────────────┬───────────────────────┘
              │
              ↓
┌─────────────────────────────────────┐
│    Сохранение JSON (results/)       │
│    Product_YYYYMMDD_HHMMSS.json     │
└─────────────────────────────────────┘

📁 Структура проекта

ozon-review-parser/
├── ozon_parser.py              # Основной парсер
├── ozon_gui.py                 # GUI интерфейс
├── requirements.txt            # Зависимости
├── README.md                   # Документация
├── .gitignore                  # Git исключения
├── urls.txt                    # Ваши URL (создайте)
├── proxies.txt                 # Ваши прокси (опционально)
├── chrome_profile_browser_*/   # Профили (авто)
└── results/                    # Результаты (авто)
    └── *.json

📄 Формат данных

[
  {
    "review_uuid": "1234567890",
    "author": "Иван П.",
    "date": "15 января 2026",
    "rating": 5,
    "text": "Отличная машина! Работает тихо...",
    "images": [
      "https://ir.ozone.ru/s3/rp-photo-1/wc1200/abc.jpg"
    ],
    "videos": [
      "https://vr-1.ozone.ru/sashimi/video-1/XYZ/asset.mp4"
    ]
  }
]

💻 Консольная версия

Для продвинутых пользователей:

python ozon_parser.py

Настройка в коде:

# ozon_parser.py - в начале файла

BROWSER_POOL_SIZE = 5
CLEAR_COOKIES_AFTER_PRODUCT = True
PROXY_MODE = "rotation"  # "none", "single", "rotation"

PROXY_ROTATION_POOL = [
    "socks5://user:pass@proxy.com:8080",
]
ROTATION_INTERVAL = 5
ROTATION_MODE = "random"

🤝 Обратная связь

Нашли баг?

Есть вопросы?

Хотите доработку под ваши задачи?

Пишите в тг - @sotovs

👤 Автор

KalmikOF


🌟 Поддержите проект

Если проект помог вам, поставьте ⭐️ на GitHub!

About

Парсер отзывов озон | Парсинг отзывов озон | озон парсер | ozon parser | ozon review parser

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages