La calidad del modelo de ML depende directamente de la calidad y el volumen de los datos de entrenamiento. Pero tan pronto como comienzas a recolectar miles de páginas, los sitios comienzan a bloquear las solicitudes, mostrar captchas y banear IPs. En este artículo, analizaremos cómo construir un pipeline confiable para la recolección de datos para conjuntos de datos: qué herramientas usar, cómo eludir las protecciones y qué tipo de proxy es adecuado para cada tarea.
Por qué los sitios bloquean la recolección de datos y qué hacer al respecto
Cuando inicias la recolección automática de datos, el sitio ve no a un usuario común, sino un flujo de solicitudes desde una sola dirección IP. Esto inmediatamente levanta banderas rojas en los sistemas de protección — Cloudflare, DataDome, PerimeterX y otras soluciones anti-bots. El resultado: captcha, bloqueo temporal o baneo total de la IP.
El problema es especialmente agudo para proyectos de ML, porque un conjunto de datos requiere no 100 páginas, sino decenas de miles. Para entrenar incluso un modelo simple de clasificación de texto se necesitan al menos 5,000–10,000 ejemplos. Para visión por computadora — cientos de miles de imágenes. Recolectar tal volumen desde una sola IP es físicamente imposible.
Los sistemas de protección analizan los siguientes parámetros:
- Frecuencia de solicitudes — más de 10–20 solicitudes por minuto desde una IP ya es sospechoso.
- User-Agent y encabezados — los encabezados estándar de los parsers son fácilmente reconocibles.
- Falta de cookies y datos de sesión — un navegador real siempre lleva un historial.
- Geolocalización de la IP — una IP de un centro de datos en los Países Bajos en un sitio de habla rusa se ve sospechosa.
- Patrón de comportamiento — una persona lee una página durante 30–60 segundos, un bot — 0.3 segundos.
La solución es una combinación de proxies adecuados, rotación de IPs e imitación del comportamiento de un usuario real. Analicemos cada elemento en detalle.
De dónde obtienen datos para conjuntos de datos de ML: fuentes principales
Antes de hablar sobre herramientas, es importante entender de dónde se obtienen los datos para entrenar modelos. Las fuentes se dividen en varias categorías, y cada una requiere un enfoque diferente.
Conjuntos de datos abiertos (sin scraping)
Lo primero que debes verificar son los conjuntos de datos abiertos ya existentes. Kaggle, Hugging Face Datasets, Google Dataset Search, UCI Machine Learning Repository contienen miles de conjuntos de datos listos. Si tu tarea es estándar (clasificación de texto, reconocimiento de objetos, análisis de sentimientos), es posible que ya exista un conjunto de datos. Esto ahorra semanas de trabajo.
Web scraping (requiere proxies)
Cuando no hay datos listos o no se ajustan a tu especificación, se necesita scraping. Tareas típicas:
- Recolección de reseñas de Wildberries, Ozon, Yandex.Market para análisis de sentimientos
- Scraping de sitios de noticias para entrenar modelos de lenguaje
- Recolección de imágenes de productos para modelos de visión por computadora
- Scraping de ofertas de trabajo de hh.ru, SuperJob para modelos de recursos humanos
- Recolección de datos de precios de marketplaces para modelos predictivos
- Scraping de redes sociales (VKontakte, Twitter/X) para tareas de NLP
API de plataformas (parcialmente cerradas)
Algunas plataformas ofrecen APIs oficiales — Twitter/X API, Reddit API, Google Places API. Problema: son caras, tienen límites y a menudo no proporcionan el volumen de datos necesario de forma gratuita. Por lo tanto, muchos equipos de ML combinan APIs con scraping.
Datos sintéticos
Un enfoque separado es la generación de datos sintéticos utilizando GPT-4 u otros LLM. Pero para esto aún se necesitan datos reales como base (ejemplos de few-shot). Por lo tanto, el scraping sigue siendo la herramienta básica para la recolección de datos para la mayoría de los proyectos de ML.
Herramientas para la recolección de datos sin escribir código
La buena noticia: para la recolección de datos para conjuntos de datos de ML no es necesario ser desarrollador. Existen herramientas listas de no-code y low-code que pueden trabajar con proxies y eludir protecciones básicas.
Scrapers sin código
| Herramienta | Para qué es adecuada | Soporte de proxies | Dificultad |
|---|---|---|---|
| Octoparse | Sitios, tablas, paginación | ✅ Sí | Baja |
| ParseHub | Sitios dinámicos (JS) | ✅ Sí | Baja |
| Apify | Actores listos para 100+ sitios | ✅ Integrado | Media |
| Bright Data IDE | Sitios protegidos complejos | ✅ Integrado | Media |
| Scrapy Cloud | Scraping a gran escala | ✅ A través de middleware | Alta |
Para la mayoría de las tareas de recolección de datos de ML, Octoparse o Apify son suficientes. Octoparse permite configurar visualmente el scraper en 20–30 minutos: indicas los elementos en la página, configuras la paginación, insertas proxies y comienzas la recolección. El resultado se exporta a CSV o JSON, que se puede usar inmediatamente para el entrenamiento.
Apify es especialmente conveniente si necesitas hacer scraping de plataformas populares: tienen "actores" listos para Instagram, Twitter/X, Amazon, Google Maps, LinkedIn y decenas de otros sitios. Simplemente estableces los parámetros y obtienes datos estructurados.
Qué tipo de proxy elegir para conjuntos de datos de ML
La elección del tipo de proxy es uno de los factores clave para el éxito en la recolección de datos. Un error aquí puede ser costoso: o te bloquean a mitad de camino, o pagas de más por potencia innecesaria. Analicemos tres tipos principales.
Proxies residenciales — para sitios protegidos
Los proxies residenciales son direcciones IP de usuarios domésticos reales. Para los sistemas anti-bots, son indistinguibles de un visitante normal. Esto los hace ideales para hacer scraping de sitios con serias protecciones: marketplaces (Wildberries, Ozon), redes sociales, agregadores de noticias.
La principal ventaja para tareas de ML: se pueden recolectar datos con geolocalización. Si estás entrenando un modelo en contenido regional, eliges proxies de la región necesaria de Rusia u otro país. Esto es especialmente importante para tareas de clasificación geolocalizada o análisis de dialectos regionales.
Proxies móviles — para redes sociales y plataformas móviles
Los proxies móviles utilizan IP de operadores móviles (4G/5G). Tienen el nivel más alto de confianza entre las plataformas, porque una IP móvil real es utilizada por cientos de personas al mismo tiempo (todos los abonados de una torre se conectan a través de una IP). Esto significa que incluso la recolección activa de datos desde una IP móvil parece normal.
Los proxies móviles son especialmente necesarios si estás recolectando datos de VKontakte, TikTok o Instagram — plataformas que bloquean agresivamente las IPs de centros de datos.
Proxies de centros de datos — para fuentes abiertas y velocidad
Los proxies de centros de datos son rápidos y baratos. No están vinculados a usuarios reales, por lo que son más fácilmente reconocidos por los sistemas de protección. Pero para muchas tareas de ML, esto es suficiente: si haces scraping de Wikipedia, archivos abiertos, GitHub, APIs públicas o sitios sin serias protecciones, los proxies de centros de datos funcionarán perfectamente y costarán significativamente menos.
Cómo elegir el tipo de proxy para tu tarea de ML:
- Marketplaces (Wildberries, Ozon, Avito): proxies residenciales con rotación
- Redes sociales (VKontakte, Instagram, TikTok): proxies móviles
- Sitios de noticias, foros, Wikipedia: proxies de centros de datos
- Google Search, Yandex: proxies residenciales o móviles
- Archivos abiertos, Common Crawl: proxies de centros de datos
Escenarios prácticos: texto, imágenes, precios, reseñas
Analicemos escenarios específicos de recolección de datos para tipos populares de tareas de ML — con fuentes, herramientas y el tipo de proxy necesario.
Escenario 1: Conjunto de datos de reseñas para análisis de sentimientos (NLP)
Tarea: recolectar 50,000 reseñas con calificaciones de Wildberries para entrenar un modelo de clasificación de sentimientos.
Fuente: Wildberries — reseñas de productos con calificaciones de 1–5 estrellas (la anotación ideal ya está disponible).
Herramienta: Octoparse o un script listo en Python con la biblioteca requests.
Proxy: Residenciales con rotación — Wildberries bloquea activamente las IPs de centros de datos.
Velocidad de recolección: 1 solicitud cada 3–5 segundos con pausas — 50,000 reseñas en 2–3 días.
Qué obtienes: Archivo CSV con columnas: texto de la reseña, calificación (1–5), categoría del producto, fecha. Este es un conjunto de datos listo para el entrenamiento — la anotación ya está integrada en los datos.
Escenario 2: Conjunto de datos de imágenes para visión por computadora
Tarea: recolectar 100,000 imágenes de productos de varias categorías para entrenar un modelo de clasificación.
Fuente: Ozon, Yandex.Market — fotografías de productos con categorías.
Herramienta: Apify (hay actores listos para e-commerce) o ParseHub.
Proxy: Proxies residenciales con rotación geográfica en Rusia.
Importante: Descarga las imágenes a través de proxies, no directamente — los servidores CDN también pueden bloquear descargas masivas.
Qué obtienes: Carpetas con imágenes, organizadas por categorías — una estructura que acepta directamente ImageDataGenerator en Keras o DataLoader en PyTorch.
Escenario 3: Cuerpo de texto para un modelo de lenguaje
Tarea: recolectar un gran cuerpo de textos en ruso para el fine-tuning de un modelo de lenguaje en un tema específico — por ejemplo, textos legales o artículos médicos.
Fuente: Foros temáticos, sitios de noticias, Habr, portales profesionales.
Herramienta: Scrapy Cloud o Octoparse para recolección estructurada.
Proxy: Proxies de centros de datos con rotación — la mayoría de los sitios de texto no tienen protecciones estrictas, y la velocidad es más importante que el anonimato.
Velocidad: Con proxies de centros de datos se pueden hacer 50–100 solicitudes por minuto y recolectar un millón de documentos en unos pocos días.
Escenario 4: Conjunto de datos de ofertas de trabajo para un modelo de HR
Tarea: recolectar 200,000 ofertas de trabajo de hh.ru para entrenar un modelo de recomendación o clasificación de profesiones.
Fuente: hh.ru — tienen una API oficial, pero con límites. Para grandes volúmenes se necesita scraping.
Herramienta: Apify (hay un actor para hh.ru) o Octoparse.
Proxy: Proxies residenciales — hh.ru está bien protegido y bloquea las IPs de centros de datos.
Qué obtienes: Datos estructurados: título de la oferta, descripción, salario, requisitos, región, industria — un excelente conjunto de datos para NLP y sistemas de recomendación.
Cómo evitar bloqueos al recolectar datos masivamente
Incluso con buenos proxies, puedes recibir un baneo si no sigues las reglas básicas. Aquí hay métodos comprobados que ayudan a recolectar datos de manera estable y sin pérdidas.
Rotación de IP y sesiones
La regla más importante: no uses una sola IP para miles de solicitudes. Configura la rotación de manera que cada 10–50 solicitudes cambie la IP. La mayoría de las herramientas (Octoparse, Apify, Scrapy) soportan esto de forma nativa al conectar un pool de proxies.
Además, cambia las cookies de sesión junto con la IP — esto imita a un nuevo usuario, no solo un cambio de dirección.
Retrasos adecuados entre solicitudes
Agrega retrasos aleatorios entre solicitudes — no fijos de 2 segundos, sino aleatorios de 1 a 5 segundos. Un intervalo fijo se detecta fácilmente como un patrón de bot. Aleatorio — imita el comportamiento humano.
Para sitios especialmente protegidos, agrega pausas más largas: cada 100 solicitudes haz una pausa de 30–60 segundos. Esto reduce la velocidad, pero disminuye drásticamente el riesgo de bloqueo.
Encabezados de solicitudes correctos
Configura el User-Agent en un navegador actual (Chrome, Firefox de las últimas versiones). Agrega encabezados HTTP estándar: Accept-Language, Accept-Encoding, Referer. La falta de estos encabezados es una señal clara de un bot para la mayoría de los sistemas de protección.
Recolección en horarios no laborables
Inicia la recolección masiva por la noche (de 2:00 a 6:00 hora de Moscú). En este momento, el tráfico en los sitios es mínimo, los sistemas anti-bots son menos agresivos, y tus solicitudes constituyen una mayor parte de la carga — lo que paradójicamente reduce las sospechas, ya que hay menos tráfico competitivo.
Manejo de errores y reintentos
Configura el manejo automático de códigos de respuesta:
- 429 (Demasiadas solicitudes) — aumenta el retraso, cambia la IP, espera 5–10 minutos.
- 403 (Prohibido) — IP bloqueada, asegúrate de cambiar el proxy.
- 503 (Servicio no disponible) — sobrecarga temporal del servidor, repite en 1–2 minutos.
- 200 con captcha — se necesita un proxy de mejor calidad (residencial en lugar de de centro de datos).
Correspondencia geográfica entre el proxy y el sitio
Usa proxies del mismo país que el sitio objetivo. Si haces scraping de Wildberries, elige IPs rusas. Si recolectas datos de un sitio alemán, necesitas proxies alemanes. La discrepancia en la geolocalización es uno de los desencadenantes más comunes de bloqueo.
Lista de verificación: configuración del pipeline de recolección de datos para ML
Utiliza esta lista de verificación antes de iniciar cualquier recolección de datos a gran escala para un conjunto de datos:
📋 Preparación
- ☐ Verificar la existencia de un conjunto de datos listo en Kaggle / Hugging Face
- ☐ Estudiar el robots.txt del sitio objetivo
- ☐ Definir el volumen de datos y la estructura del conjunto de datos
- ☐ Elegir la herramienta de scraping (Octoparse, Apify, Scrapy)
- ☐ Elegir el tipo de proxy para la tarea (residenciales / móviles / de centro de datos)
⚙️ Configuración
- ☐ Conectar un pool de proxies con rotación de IP
- ☐ Configurar User-Agent (Chrome/Firefox actual)
- ☐ Agregar encabezados HTTP estándar
- ☐ Configurar retrasos aleatorios (1–5 segundos)
- ☐ Configurar manejo de errores (429, 403, 503)
- ☐ Especificar el formato de exportación de datos (CSV, JSON, JSONL)
🧪 Pruebas
- ☐ Ejecutar una prueba con 100–500 registros
- ☐ Verificar la calidad y completitud de los datos
- ☐ Asegurarse de que no hay bloqueos en el volumen de prueba
- ☐ Verificar la velocidad de recolección y calcular el tiempo para el conjunto de datos completo
🚀 Lanzamiento y monitoreo
- ☐ Lanzar en horario nocturno (02:00–06:00 MSK)
- ☐ Configurar notificaciones de errores
- ☐ Verificar periódicamente la calidad de los datos recolectados
- ☐ Guardar resultados intermedios (checkpoint cada 10,000 registros)
🧹 Post-procesamiento
- ☐ Eliminar duplicados
- ☐ Limpiar etiquetas HTML y caracteres especiales de los textos
- ☐ Verificar el balance de clases (para tareas de clasificación)
- ☐ Dividir en conjuntos de train/validation/test
- ☐ Guardar en un formato compatible con tu framework de ML
Conclusión
La recolección de datos para conjuntos de datos de ML no es una tarea única, sino un proceso sistemático. Las principales conclusiones de este artículo: la elección correcta de proxies determina si llegarás al final o te quedarás atascado en bloqueos. Los proxies residenciales son necesarios para marketplaces y agregadores protegidos, los móviles para redes sociales, y los de centros de datos para fuentes de texto abiertas. Herramientas como Octoparse y Apify permiten construir un pipeline sin escribir código. Y seguir reglas básicas (rotación de IP, retrasos aleatorios, encabezados correctos) permite recolectar cientos de miles de registros sin pérdidas.
Si planeas recolectar datos de marketplaces, sitios de noticias o portales temáticos para entrenar modelos de ML, recomendamos comenzar con proxies residenciales — proporcionan el nivel máximo de confianza por parte de los sistemas de protección y el riesgo mínimo de bloqueos incluso en recolecciones masivas de datos.