Scraping sin código con IA + Exploración de sitios web — todo en una interfaz gráfica
ScrapIA es una aplicación con interfaz gráfica construida sobre el framework Scrapling, diseñada para dos cosas:
- Extraer datos estructurados de sitios web describiéndolos en lenguaje natural — la IA genera los selectores CSS automáticamente
- Explorar la estructura completa de sitios web corporativos y generar un informe organizado por secciones
Todo sin escribir una sola línea de código.
| Función | Descripción |
|---|---|
| Columnas dinámicas | Pide lo que quieras: "productos con nombre, precio, envío y URL" — la app genera exactamente esas columnas |
| Selectores auto-generados | GPT-4o analiza el DOM y genera selectores CSS válidos |
| Validación automática | Los selectores se prueban contra el HTML real antes de ejecutar |
| Optimizado para MercadoLibre | ~100% de precisión en nombre, precio, calificación y URL |
💡 Nota: En los ejemplos de este README se usa MercadoLibre como caso principal por ser uno de los e-commerce más accesibles y populares de Latinoamérica. El framework puede adaptarse a cualquier otro sitio de comercio electrónico ajustando los selectores y la configuración según la estructura de cada sitio.
| Función | Descripción |
|---|---|
| Crawl automático | Descubre todas las páginas internas del sitio siguiendo enlaces |
| Clasificación por secciones | Organiza páginas en: inicio, servicios, contacto, blog, precios, etc. |
| Informe Markdown legible | Genera un reporte estructurado con títulos, previews, headings y datos de contacto |
| Detección de contacto | Extrae automáticamente emails y teléfonos |
| Pestaña | Función |
|---|---|
| 🔍 Extraer | URL + descripción + botón — el flujo principal |
| 📊 Resultados | Tabla de datos con vista previa JSON |
| 🔧 Avanzado | Selectores generados por IA + modo experto manual |
| 📖 Guía | Cuándo usar cada modo + ejemplos listos |
| 🔎 Explorar | Crawl de sitio completo con informe Markdown |
| Modo | Tecnología | Cuándo usarlo |
|---|---|---|
| 📄 Normal | HTTP directo con curl_cffi | Sitios sin protección (MercadoLibre, blogs, corporativos) |
| 🌐 JavaScript | Playwright headless | Contenido dinámico (Walmart trae 6x más datos) |
| 🥷 Anti-bloqueo | Stealth + Cloudflare solver | Pantalla "Just a moment..." |
🔄 Regla de oro: Empieza con Normal. Si no trae datos → JavaScript. Si dice "bloqueado" → Anti-bloqueo.
- Navega entre páginas automáticamente
- Detección del patrón
?page=Ninteligente - Configurable hasta 50 páginas
- JSON / JSONL
- CSV
- Excel (XLSX)
- Markdown
- HTML
- Python 3.10+
- pip
- API Key de OpenAI (para detección con GPT-4o)
cd Scrapling_new
pip install -r requirements.txt
playwright install chromium
# Configurar API Key en archivo .env:
# OPENAI_API_KEY=sk-proj-tu-key
python scrapling_new/ui/app_gradio_mj.pyLa app se abre en http://127.0.0.1:7860
pip install gradio scrapling pandas openpyxl openai python-dotenv
python scrapling_new/ui/app_gradio_mj.py- Pega la URL de la página
- Describe qué datos quieres (ej: "productos con nombre, precio y calificación")
- Presiona "Extraer datos automáticamente"
- Revisa resultados y descarga en JSON o CSV
- Ve a la pestaña 🔎 Explorar
- Ingresa la URL raíz del sitio
- Configura páginas máximas (default: 20)
- Presiona "Explorar sitio"
- Lee el informe Markdown organizado por secciones
Cuando la IA no logra identificar los selectores correctos, puedes configurarlos manualmente:
- Abre el sitio en tu navegador y presiona F12 (Inspeccionar elemento)
- Identifica los selectores CSS del contenedor y cada campo (nombre, precio, etc.)
- En la app, ve a 🔧 Avanzado → ⌨️ Modo experto
- Ingresa los selectores manualmente y presiona
▶️ Ejecutar scraping
Este modo es ideal cuando ya conoces la estructura del sitio o quieres ahorrar tokens de IA. También permite reutilizar selectores que la IA generó en una extracción anterior.
URL: https://www.mercadolibre.com.co/ofertas
Modo: Normal
Consulta: "Productos con nombre, precio, calificación y URL"
Resultado: 54 productos/página ✅ 100% campos completos
También funciona con variaciones de la consulta:
- "Productos con nombre, precio, envío gratis y URL"
- "Productos con titulo, costo, estrellas y enlace"
- "Productos con nombre, descuento, precio final y calificacion"
URL: https://www.databiq.com
Resultado: 9 páginas descubiertas en 4 secciones
🏠 Inicio (2 páginas)
🛠️ Servicios (5 páginas: ML, IA, Visualización, Automatización)
📝 Blog (1 página)
📞 Contacto (1 página)
Scrapling_new/
├── scrapling_new/
│ ├── core/
│ │ ├── adapter.py # Adaptador unificado de fetchers
│ │ ├── crawler.py # Crawler de sitios + informe Markdown
│ │ ├── html_analyzer.py # Analizador DOM + contexto enriquecido
│ │ ├── llm_service.py # Integración con GPT-4o
│ │ ├── selector_validator.py # Validación de selectores CSS
│ │ ├── config.py # Configuraciones
│ │ └── fetcher_worker.py # Worker subprocess (Windows)
│ ├── ui/
│ │ ├── app_gradio.py # App simple (selectores manuales)
│ │ └── app_gradio_mj.py # App principal con IA (5 pestañas)
│ └── utils/
│ ├── exporter.py # Exportador multi-formato
│ └── helpers.py # Validación URL, limpieza texto
├── examples/ # Ejemplos de uso por script
└── tests/ # Tests unitarios
| Sitio | Modo | Items | Completitud |
|---|---|---|---|
| MercadoLibre | Normal | 54/pág | ✅ 100% |
| Databiq (explorar) | Normal | 9 págs | ✅ Informe completo |
MercadoLibre se usa como referencia principal por ser uno de los e-commerce más accesibles y populares de Latinoamérica. El framework puede adaptarse a otros sitios ajustando selectores y configuración según la estructura de cada sitio.
| Problema | Solución |
|---|---|
| "Error al llamar a GPT-4o" | Verifica OPENAI_API_KEY en .env |
| 0 items extraídos | Cambia de modo (Normal → JavaScript → Anti-bloqueo) |
| Campos vacíos | Revisa selectores en pestaña 🔧 Avanzado |
| Scraping lento | Usa modo Normal si el sitio no requiere JS |
BSD — ver archivo LICENSE
- Scrapling: Framework base
- Gradio: Interfaz gráfica
- OpenAI GPT-4o: Motor de IA
- Fork → 2. Rama feature → 3. Commit → 4. Push → 5. Pull Request
Hecho con ❤️ para la comunidad de Web Scraping