126 lines
3.8 KiB
Markdown
126 lines
3.8 KiB
Markdown
# 📋 Documento del Proyecto — Website Craw CSS
|
|
|
|
> ← [Anterior: 🕷️ Crawl4AI](./04-crawl4ai-ubuntu.md) | [Volver al índice](../README.md)
|
|
|
|
---
|
|
|
|
## 1. Iniciación
|
|
|
|
| Campo | Detalle |
|
|
|-------|---------|
|
|
| **Objetivo** | Automatizar la extracción de productos desde páginas web mediante Crawl4AI, procesar los datos con n8n y exportarlos en formato usable (JSON/archivo) |
|
|
| **Stakeholders** | Equipo de datos/marketing *(consumirá los resultados)*, equipo de IT *(mantendrá el flujo en n8n)* |
|
|
| **Justificación** | Reducir esfuerzo manual en scraping, garantizar consistencia de datos y preparar pipeline para análisis en Google Sheets u otras herramientas |
|
|
|
|
---
|
|
|
|
## 2. Planificación
|
|
|
|
### Requerimientos técnicos
|
|
|
|
- Servidor con n8n instalado (Ubuntu/Docker)
|
|
- Conexión a Crawl4AI
|
|
- Credenciales: `httpBasicAuth` y `httpHeaderAuth`
|
|
- Acceso a Google Sheets (OAuth2 configurado)
|
|
|
|
### Alcance
|
|
|
|
- Número de URLs a escanear: `Array.from({ length: 2 })` → 2 páginas por ahora, escalable
|
|
- **Campos a extraer**: `link`, `título`, `rating` (conteo de estrellas), `descripción`, `precio`, `stock`
|
|
|
|
### Riesgos
|
|
|
|
| Riesgo | Descripción |
|
|
|--------|-------------|
|
|
| 🔴 Bloqueo de IP | Crawling excesivo puede resultar en bloqueo por el sitio objetivo |
|
|
| 🟡 Cambio en HTML | Si la estructura de la web cambia, los selectores CSS deben actualizarse |
|
|
| 🟡 Fallos de credenciales | Acceso perdido a Crawl4AI o Google Sheets interrumpe el flujo |
|
|
|
|
---
|
|
|
|
## 3. Diseño y Arquitectura
|
|
|
|
### Flujo de nodos en n8n
|
|
|
|
```
|
|
Manual Trigger
|
|
│
|
|
▼
|
|
Markdown Crawl Request ──► POST a Crawl4AI con URLs + esquema JSON-CSS
|
|
│
|
|
▼
|
|
Wait (15s) ──────────────► Pausa mientras Crawl4AI procesa
|
|
│
|
|
▼
|
|
Get LLM Crawl ───────────► Recupera resultados por task_id
|
|
│
|
|
▼
|
|
LLM if In Process ───────► ¿Sigue en estado "pending/processing"?
|
|
│ │
|
|
[Sí] [No]
|
|
│ │
|
|
└─────────┤
|
|
▼
|
|
LLM Result ──────► Convierte rating a número (star_count)
|
|
│
|
|
▼
|
|
Split Out ──────► Divide resultados por producto
|
|
│
|
|
▼
|
|
Convert to File ───► Exporta a archivo final (JSON/CSV)
|
|
│
|
|
▼
|
|
[Opcional] Google Sheets ── (deshabilitado por defecto)
|
|
```
|
|
|
|
**Tipo de arquitectura**: Workflow asincrónico con polling + procesamiento + exportación.
|
|
|
|
---
|
|
|
|
## 4. Ejecución / Desarrollo
|
|
|
|
### Implementación inicial
|
|
|
|
1. Configurar credenciales: `crawl4aiserver`, `panel`, Google Sheets.
|
|
2. Probar con dataset pequeño (2 páginas) para validar selectores CSS.
|
|
|
|
### Edición futura
|
|
|
|
- Ampliar `Array.from({ length: N })` para procesar más páginas.
|
|
- Ajustar `baseSelector` y `fields` si cambia la estructura web.
|
|
- Habilitar el módulo de Google Sheets para registro en línea.
|
|
|
|
---
|
|
|
|
## 5. Monitoreo y Control
|
|
|
|
### Logs
|
|
|
|
Revisar ejecuciones en: **n8n → Execution History**
|
|
|
|
### KPIs
|
|
|
|
| Indicador | Descripción |
|
|
|-----------|-------------|
|
|
| % productos extraídos | Porcentaje de productos extraídos correctamente por batch |
|
|
| Tiempo de procesamiento | Tiempo promedio por batch de páginas |
|
|
|
|
### Control de cambios
|
|
|
|
- Antes de editar `schema.fields`, probar en ambiente de desarrollo.
|
|
- Documentar versiones del flujo (`versionId` ya está incluido en el JSON de n8n).
|
|
|
|
---
|
|
|
|
## 6. Cierre / Entrega
|
|
|
|
| Entregable | Formato |
|
|
|------------|---------|
|
|
| Archivo de productos estructurados | JSON o CSV |
|
|
| Exportación automática | Google Drive / Google Sheets |
|
|
| Documentación de uso | Este repositorio |
|
|
|
|
---
|
|
|
|
> ← [Anterior: 🕷️ Crawl4AI](./04-crawl4ai-ubuntu.md) | [Volver al índice](../README.md)
|