Назад к блогу

Сбор данных для machine learning датасетов: как парсить тысячи страниц без блокировок и капч

Разбираем, как собирать большие объёмы данных для ML-датасетов без банов и капч — какие прокси выбрать и как выстроить процесс.

📅14 марта 2026 г.

Качество ML-модели напрямую зависит от качества и объёма обучающих данных. Но как только вы начинаете собирать тысячи страниц — сайты начинают блокировать запросы, показывать капчи и банить IP. В этой статье разберём, как выстроить надёжный пайплайн сбора данных для датасетов: какие инструменты использовать, как обходить защиты и какой тип прокси подходит для каждой задачи.

Почему сайты блокируют сбор данных и что с этим делать

Когда вы запускаете автоматический сбор данных, сайт видит не обычного пользователя, а поток запросов с одного IP-адреса. Это сразу поднимает красные флаги у систем защиты — Cloudflare, DataDome, PerimeterX и других антибот-решений. Итог: капча, временная блокировка или полный бан IP.

Проблема особенно острая для ML-проектов, потому что датасет требует не 100 страниц, а десятки тысяч. Для обучения даже простой модели классификации текста нужно минимум 5 000–10 000 примеров. Для компьютерного зрения — сотни тысяч изображений. Собрать такой объём с одного IP физически невозможно.

Системы защиты анализируют следующие параметры:

  • Частота запросов — больше 10–20 запросов в минуту с одного IP уже подозрительно.
  • User-Agent и заголовки — стандартные заголовки парсеров легко распознаются.
  • Отсутствие куки и сессионных данных — реальный браузер всегда несёт историю.
  • Геолокация IP — IP дата-центра из Нидерландов на русскоязычном сайте выглядит подозрительно.
  • Паттерн поведения — человек читает страницу 30–60 секунд, бот — 0,3 секунды.

Решение — комбинация правильных прокси, ротации IP и имитации поведения реального пользователя. Разберём каждый элемент подробнее.

Откуда берут данные для ML-датасетов: основные источники

Прежде чем говорить об инструментах, важно понять — откуда вообще берут данные для обучения моделей. Источники делятся на несколько категорий, и для каждой нужен свой подход.

Открытые датасеты (без парсинга)

Первое, что стоит проверить — уже существующие открытые датасеты. Kaggle, Hugging Face Datasets, Google Dataset Search, UCI Machine Learning Repository содержат тысячи готовых наборов данных. Если ваша задача стандартная (классификация текста, распознавание объектов, анализ тональности), возможно, датасет уже существует. Это экономит недели работы.

Веб-парсинг (требует прокси)

Когда готовых данных нет или они не подходят под вашу специфику — нужен парсинг. Типичные задачи:

  • Сбор отзывов с Wildberries, Ozon, Яндекс.Маркет для анализа тональности
  • Парсинг новостных сайтов для обучения языковых моделей
  • Сбор изображений товаров для моделей компьютерного зрения
  • Парсинг вакансий с hh.ru, SuperJob для HR-моделей
  • Сбор данных о ценах с маркетплейсов для прогнозных моделей
  • Парсинг социальных сетей (ВКонтакте, Twitter/X) для NLP-задач

API платформ (частично закрыты)

Некоторые платформы предоставляют официальные API — Twitter/X API, Reddit API, Google Places API. Проблема: они дорогие, имеют лимиты и часто не дают нужного объёма данных бесплатно. Поэтому многие ML-команды комбинируют API с парсингом.

Синтетические данные

Отдельный подход — генерация синтетических данных с помощью GPT-4 или других LLM. Но для этого всё равно нужны реальные данные как основа (few-shot примеры). Поэтому парсинг остаётся базовым инструментом сбора данных для большинства ML-проектов.

Инструменты для сбора данных без написания кода

Хорошая новость: для сбора данных под ML-датасеты не обязательно быть разработчиком. Существуют готовые no-code и low-code инструменты, которые умеют работать с прокси и обходить базовые защиты.

No-code парсеры

Инструмент Для чего подходит Поддержка прокси Сложность
Octoparse Сайты, таблицы, пагинация ✅ Да Низкая
ParseHub Динамические сайты (JS) ✅ Да Низкая
Apify Готовые акторы для 100+ сайтов ✅ Встроенная Средняя
Bright Data IDE Сложные защищённые сайты ✅ Встроенная Средняя
Scrapy Cloud Масштабный парсинг ✅ Через middleware Высокая

Для большинства задач сбора ML-данных достаточно Octoparse или Apify. Octoparse позволяет визуально настроить парсер за 20–30 минут: указываете элементы на странице, настраиваете пагинацию, вставляете прокси — и запускаете сбор. Результат выгружается в CSV или JSON, который сразу можно использовать для обучения.

Apify особенно удобен, если нужно парсить популярные платформы: у них есть готовые "акторы" для Instagram, Twitter/X, Amazon, Google Maps, LinkedIn и десятков других сайтов. Вы просто задаёте параметры — и получаете структурированные данные.

Какой тип прокси выбрать для ML-датасетов

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

Резидентные прокси — для защищённых сайтов

Резидентные прокси — это IP-адреса реальных домашних пользователей. Для антибот-систем они неотличимы от обычного посетителя. Это делает их идеальными для парсинга сайтов с серьёзной защитой: маркетплейсов (Wildberries, Ozon), социальных сетей, новостных агрегаторов.

Главное преимущество для ML-задач: можно собирать данные с географической привязкой. Если вы обучаете модель на региональном контенте — выбираете прокси из нужного региона России или другой страны. Это особенно важно для задач геолокационной классификации или анализа региональных диалектов.

Мобильные прокси — для социальных сетей и мобильных платформ

Мобильные прокси используют IP мобильных операторов (4G/5G). Они имеют самый высокий уровень доверия у платформ — потому что один мобильный IP реально используется сотнями людей одновременно (все абоненты одной вышки выходят через один IP). Это значит, что даже активный сбор данных с мобильного IP выглядит нормально.

Мобильные прокси особенно нужны, если вы собираете данные из ВКонтакте, TikTok или Instagram — платформ, которые агрессивно блокируют дата-центровые IP.

Прокси дата-центров — для открытых источников и скорости

Прокси дата-центров — быстрые и дешёвые. Они не имеют привязки к реальным пользователям, поэтому легче распознаются защитными системами. Но для многих ML-задач этого достаточно: если вы парсите Википедию, открытые архивы, GitHub, публичные API или сайты без серьёзной защиты — дата-центровые прокси справятся отлично и обойдутся значительно дешевле.

Как выбрать тип прокси для вашей ML-задачи:

  • Маркетплейсы (Wildberries, Ozon, Авито): резидентные прокси с ротацией
  • Социальные сети (ВКонтакте, Instagram, TikTok): мобильные прокси
  • Новостные сайты, форумы, Википедия: дата-центровые прокси
  • Google Search, Яндекс: резидентные или мобильные прокси
  • Открытые архивы, Common Crawl: дата-центровые прокси

Практические сценарии: текст, изображения, цены, отзывы

Разберём конкретные сценарии сбора данных для популярных типов ML-задач — с указанием источников, инструментов и нужного типа прокси.

Сценарий 1: Датасет отзывов для анализа тональности (NLP)

Задача: собрать 50 000 отзывов с оценками с Wildberries для обучения модели классификации тональности.

Источник: Wildberries — отзывы к товарам с оценками 1–5 звёзд (идеальная разметка уже есть).
Инструмент: Octoparse или готовый скрипт на Python с библиотекой requests.
Прокси: Резидентные с ротацией — Wildberries активно блокирует дата-центровые IP.
Скорость сбора: 1 запрос каждые 3–5 секунд с паузами — 50 000 отзывов за 2–3 дня.

Что получаете: CSV-файл с колонками: текст отзыва, оценка (1–5), категория товара, дата. Это готовый датасет для обучения — разметка уже встроена в данные.

Сценарий 2: Датасет изображений для компьютерного зрения

Задача: собрать 100 000 изображений товаров из нескольких категорий для обучения модели классификации.

Источник: Ozon, Яндекс.Маркет — фотографии товаров с категориями.
Инструмент: Apify (есть готовые акторы для e-commerce) или ParseHub.
Прокси: Резидентные прокси с географической ротацией по России.
Важно: Скачивайте изображения через прокси, а не напрямую — CDN-серверы тоже умеют блокировать массовые загрузки.

Что получаете: Папки с изображениями, разбитые по категориям — структура, которую напрямую принимает ImageDataGenerator в Keras или DataLoader в PyTorch.

Сценарий 3: Текстовый корпус для языковой модели

Задача: собрать большой корпус русскоязычных текстов для дообучения (fine-tuning) языковой модели под конкретную тематику — например, юридические тексты или медицинские статьи.

Источник: Тематические форумы, новостные сайты, Habr, профессиональные порталы.
Инструмент: Scrapy Cloud или Octoparse для структурированного сбора.
Прокси: Дата-центровые прокси с ротацией — большинство текстовых сайтов не имеют жёсткой защиты, и скорость важнее анонимности.
Скорость: С дата-центровыми прокси можно делать 50–100 запросов в минуту и собрать миллион документов за несколько дней.

Сценарий 4: Датасет вакансий для HR-модели

Задача: собрать 200 000 вакансий с hh.ru для обучения модели рекомендации или классификации профессий.

Источник: hh.ru — у них есть официальный API, но с лимитами. Для больших объёмов нужен парсинг.
Инструмент: Apify (есть актор для hh.ru) или Octoparse.
Прокси: Резидентные прокси — hh.ru хорошо защищён и блокирует дата-центровые IP.
Что получаете: Структурированные данные: название вакансии, описание, зарплата, требования, регион, отрасль — отличный датасет для NLP и рекомендательных систем.

Как избежать блокировок при массовом сборе данных

Даже с хорошими прокси можно получить бан, если не соблюдать базовые правила. Вот проверенные методы, которые помогают собирать данные стабильно и без потерь.

Ротация IP и сессий

Самое важное правило: не используйте один IP для тысяч запросов. Настройте ротацию так, чтобы каждые 10–50 запросов менялся IP. Большинство инструментов (Octoparse, Apify, Scrapy) поддерживают это из коробки при подключении прокси-пула.

Дополнительно меняйте сессионные куки вместе с IP — это имитирует нового пользователя, а не просто смену адреса.

Правильные задержки между запросами

Добавляйте случайные задержки между запросами — не фиксированные 2 секунды, а случайные от 1 до 5 секунд. Фиксированный интервал легко детектируется как бот-паттерн. Случайный — имитирует поведение человека.

Для особо защищённых сайтов добавляйте более длинные паузы: каждые 100 запросов делайте перерыв 30–60 секунд. Это снижает скорость, но радикально уменьшает риск блокировки.

Корректные заголовки запросов

Настройте User-Agent на актуальный браузер (Chrome, Firefox последних версий). Добавьте стандартные HTTP-заголовки: Accept-Language, Accept-Encoding, Referer. Отсутствие этих заголовков — явный признак бота для большинства защитных систем.

Сбор в нерабочее время

Запускайте массовый сбор ночью (с 2:00 до 6:00 по московскому времени). В это время трафик на сайтах минимальный, антибот-системы менее агрессивны, а ваши запросы составляют бо́льшую долю нагрузки — что парадоксально снижает подозрения, так как конкурирующего трафика меньше.

Обработка ошибок и повторные попытки

Настройте автоматическую обработку кодов ответа:

  • 429 (Too Many Requests) — увеличьте задержку, смените IP, подождите 5–10 минут.
  • 403 (Forbidden) — IP заблокирован, обязательно смените прокси.
  • 503 (Service Unavailable) — временная перегрузка сервера, повторите через 1–2 минуты.
  • 200 с капчей — нужен более качественный прокси (резидентный вместо дата-центрового).

Географическое соответствие прокси и сайта

Используйте прокси из той же страны, что и целевой сайт. Если парсите Wildberries — выбирайте российские IP. Если собираете данные с немецкого сайта — нужны немецкие прокси. Несоответствие геолокации — один из самых частых триггеров блокировки.

Чек-лист: настройка пайплайна сбора данных для ML

Используйте этот чек-лист перед запуском любого масштабного сбора данных для датасета:

📋 Подготовка

  • ☐ Проверить наличие готового датасета на Kaggle / Hugging Face
  • ☐ Изучить robots.txt целевого сайта
  • ☐ Определить объём данных и структуру датасета
  • ☐ Выбрать инструмент парсинга (Octoparse, Apify, Scrapy)
  • ☐ Выбрать тип прокси под задачу (резидентные / мобильные / дата-центр)

⚙️ Настройка

  • ☐ Подключить прокси-пул с ротацией IP
  • ☐ Настроить User-Agent (актуальный Chrome/Firefox)
  • ☐ Добавить стандартные HTTP-заголовки
  • ☐ Настроить случайные задержки (1–5 секунд)
  • ☐ Настроить обработку ошибок (429, 403, 503)
  • ☐ Указать формат выгрузки данных (CSV, JSON, JSONL)

🧪 Тестирование

  • ☐ Запустить тест на 100–500 записях
  • ☐ Проверить качество и полноту данных
  • ☐ Убедиться, что нет блокировок на тестовом объёме
  • ☐ Проверить скорость сбора и рассчитать время на полный датасет

🚀 Запуск и мониторинг

  • ☐ Запустить в ночное время (02:00–06:00 МСК)
  • ☐ Настроить уведомления об ошибках
  • ☐ Периодически проверять качество собираемых данных
  • ☐ Сохранять промежуточные результаты (checkpoint каждые 10 000 записей)

🧹 Постобработка

  • ☐ Удалить дубликаты
  • ☐ Очистить HTML-теги и специальные символы из текстов
  • ☐ Проверить баланс классов (для задач классификации)
  • ☐ Разбить на train/validation/test выборки
  • ☐ Сохранить в формате, совместимом с вашим ML-фреймворком

Заключение

Сбор данных для ML-датасетов — это не разовая задача, а системный процесс. Главные выводы из этой статьи: правильный выбор прокси определяет, дойдёте ли вы до конца или застрянете на блокировках. Резидентные прокси нужны для защищённых маркетплейсов и агрегаторов, мобильные — для социальных сетей, дата-центровые — для открытых текстовых источников. Инструменты вроде Octoparse и Apify позволяют выстроить пайплайн без написания кода. А соблюдение базовых правил (ротация IP, случайные задержки, корректные заголовки) позволяет собирать сотни тысяч записей без потерь.

Если вы планируете собирать данные с маркетплейсов, новостных сайтов или тематических порталов для обучения ML-моделей, рекомендуем начать с резидентных прокси — они обеспечивают максимальный уровень доверия со стороны защитных систем и минимальный риск блокировок даже при масштабном сборе данных.