bgustscraper 🚀
Ingesta Robusta, Legal, Semántica y Segura para Ecosistemas de NLP y RAG.
bgustscraper es una herramienta de scraping y extracción estructurada de nivel empresarial diseñada para alimentar canales de datos RAG (Retrieval-Augmented Generation) de forma ética, eficiente y completamente autónoma. Integra un núcleo de IA local y telemetría avanzada para validar el cumplimiento legal, resumir semánticamente y servir información en formato seguro y estructurado.
🌟 Características Clave
- Arquitectura Híbrida Multi-Motor (Rust + Node.js):
- Core (Rust): Gestión de concurrencia de alto rendimiento bajo el runtime asíncrono Tokio.
- Stealth Worker (Node.js/Playwright): Navegación dinámica con evasión de bloqueos (
playwright-extra+ plugins de stealth) y scroll inteligente. - Motor Red de Respuesto (Cloudscraper): Bypass a nivel TLS para sortear firewalls estrictos.
- IA y NLP 100% Local y Offline (Hugging Face ONNX):
- Representación Semántica: Generación local de embeddings con
all-MiniLM-L6-v2en CPU. - Extracción de JSON Estructurado: Inferencia local con el modelo
Qwen2.5-0.5B-Instructcuantizado en Q4 (ONNX Runtime), logrando estructuración en JSON sin conexiones externas ni APIs de pago.
- Representación Semántica: Generación local de embeddings con
- Compresión Extractiva por Clustering K-Means (
linfa-clustering):- Rust segmenta el Markdown de la página y vectoriza las oraciones.
- Aplica el algoritmo K-Means de la librería nativa de Machine Learning
linfa. - Filtra y selecciona las oraciones más cercanas a los centroides de cada cluster, comprimiendo textos masivos a resúmenes ultra-densos libres de redundancia antes de la inferencia.
- Caché Transaccional Embebida (
redb):- Base de datos clave-valor embebida en Rust puro (
downloads/cache.db). - Evita consultas de red y cargas innecesarias de Playwright en URLs ya indexadas, reduciendo el tiempo de raspado en más de un 50% y la huella en memoria en ~23 GB.
- Base de datos clave-valor embebida en Rust puro (
- Servidor Web HTTP API Seguro (Axum + JWT):
- Levanta un servidor web asíncrono de alto rendimiento usando Axum.
- Seguridad empresarial robusta protegida rigurosamente con JSON Web Tokens (JWT) (
jsonwebtoken).
- Daemon Planificador de Agenda (Scheduling):
- Controla ejecuciones en ventanas horarias asíncronas complejas (ej. capturar tasas del BCV de lunes a viernes, una vez AM y una vez PM).
- Mantiene estado en
redbpara tolerar reinicios del sistema sin duplicar ejecuciones.
🏗️ Arquitectura del Ecosistema
[ bgustscraper CLI ]
│
┌───────────────────────────┴───────────────────────────┐
▼ (Modo Interactivo / CLI) ▼ (Modo Daemon / Server)
[ Ingesta de Documentos ] [ Servidor Web API Seguro (Axum) ]
│ ├─ POST /api/auth (JWT Sign)
├─► Sintáctica (HTML tags) ├─ GET /api/bcv (Protected)
└─► Semántica (Inferencia Qwen) └─ GET /api/cache (Protected)
│ ▲
▼ │
┌───────────────────────────────────────────────────────────────────┴──┐
│ Base de Datos Embebida (redb) │
│ - Caché Persistente local de páginas y embeddings │
│ - Tabla de estado e historial de Daemon Scheduler │
└──────────────────────────────────┬───────────────────────────────────┘
▼
┌─────────────────────────────────────┐
│ Stealth Playwright Worker │
│ - all-MiniLM-L6-v2 (Embeddings) │
│ - Qwen2.5-0.5B ONNX Q4 (JSON) │
└─────────────────────────────────────┘
🚀 Instalación y Requisitos
Requisitos Previos
Pasos
-
Clonar el repositorio:
-
Instalar dependencias del Worker:
-
Compilar el proyecto:
🛠️ Modos de Uso
1. Modo Interactivo (CLI)
Ejecuta el binario interactivo para buscar fuentes y descargar documentos de forma asistida:
2. Modo Extractor Semántico Genérico
Extrae cualquier estructura de datos en JSON a partir del Markdown de una página web usando prompts de lenguaje natural:
Los resultados se guardan en JSON estructurado en la carpeta downloads/.
3. Modo Daemon de Agenda + Servidor Web API Seguro
Arranca el programador asíncrono de tareas y levanta el servidor seguro de Axum en el puerto 8080 de forma desatendida:
Endpoints de la API Segura:
POST /api/auth: Recibe{ "username": "admin", "password": "bgust2026" }y retorna un token JWT firmado.GET /api/bcv: Consulta protegida (HeaderAuthorization: Bearer <token>) que devuelve la última captura de divisas del BCV.GET /api/cache: Consulta protegida que devuelve los metadatos de estado del almacenamiento embebidoredb.
4. Suite de Benchmark Integrada
Mide y compara de forma automatizada y científica la huella de tiempo, red, y memoria RAM física total sumada (Rust + Node + Playwright Chromium) en cada modalidad de scraping:
🐳 Despliegue Aislado con Docker
El proyecto incluye un Dockerfile optimizado para benchmarking y despliegue local de producción que pre-descarga y almacena en caché los modelos de Hugging Face en la imagen para ejecuciones 100% offline.
Construir la imagen:
Ejecutar el contenedor:
📖 Documentación Detallada (Estilo Docusaurus)
Hemos estructurado una documentación completa y modular del sistema en formato Docusaurus simplificado dentro de la carpeta docs/. Te invitamos a leer los módulos individuales para profundizar en el funcionamiento del CLI:
- Portal de Documentación Principal (TOC)
- Arquitectura Completa del Ecosistema
- Guía de Instalación y Primeros Pasos
- Evaluación de Configuraciones e Intervenciones Manuales
- Especificaciones de OpenAPI 3.0
- Daemon Planificador y Control de Agenda
- Resultados del Benchmark de Recursos
- Empaquetamiento y Distribución en Linux
- Métodos y Estrategias de Raspado:
📜 Licencia y Créditos
Este proyecto se distribuye bajo la licencia MIT. Consulta el archivo CREDITS.md para ver la lista completa de atribuciones, licencias y créditos correspondientes a todas las librerías de terceros (Rust crates, Node.js packages) y modelos de IA locales utilizados para garantizar un uso 100% libre de infracciones.