bgustscraper 0.2.0

Advanced semantic scraping engine with AI-driven compliance checks and legal terms validation
Documentation
# Método de Scraping 1: Detección Sintáctica Estática 🔍

La **Detección Sintáctica Estática** es la estrategia de raspado de primer nivel en `bgustscraper`. Está diseñada para ser ultrarrápida, de bajo consumo y efectiva en sitios web tradicionales que sirven enlaces de descarga directos en su estructura HTML inicial.

---

## ⚙️ Principio de Funcionamiento

Cuando el orquestador Rust inicia un scraping, evalúa primero las etiquetas HTML devueltas por el navegador o el cliente HTTP. El módulo `extractor.rs` realiza una búsqueda sintáctica sobre el árbol DOM:

1. **Parsea el HTML:** Convierte el código HTML crudo en un árbol DOM consultable.
2. **Filtrado de Elementos:** Escanea todas las etiquetas de hipervínculos (`<a href="...">`) presentes en el documento.
3. **Resolución de URLs Relativas:** Convierte cualquier enlace relativo (ej: `/documentos/tasa.pdf`) en una dirección absoluta válida utilizando el dominio base (ej: `https://example.com/documentos/tasa.pdf`).
4. **Validación de Patrones:** Compara las URLs resultantes contra una lista de extensiones de documentos de interés:
   * **Documentos:** `.pdf`, `.doc`, `.docx`
   * **Hojas de Cálculo:** `.csv`, `.xls`, `.xlsx`
   * **Archivos Comprimidos:** `.zip`, `.rar`, `.tar.gz`
   * **Formatos de Intercambio:** `.json`, `.xml`

---

## 🛠️ Código y Archivos Relacionados

* **Implementación Rust:** [extractor.rs]file:///home/august/code/bgust-nlp-ecosystem/bgustscraper/src/extractor.rs
  * Contiene la función principal `find_documents(html: &str, base_url: &str) -> Vec<String>`.
* **Motor HTML Utilizado:** La biblioteca `scraper` de Rust (basada en el motor HTML5 `html5ever`).

---

## ⚡ Flujo de Entrada y Salida

* **Entrada:**
  * `html`: String con el HTML parseable de la página.
  * `base_url`: String con la URL base de origen para resolver enlaces relativos.
* **Salida:**
  * `Vec<String>`: Listado de URLs absolutas deduplicadas que apuntan a descargas directas de archivos.

---

## ⚖️ Ventajas y Desventajas

### Ventajas:
* **Velocidad Exponencial:** Toma fracciones de milisegundo en procesarse una vez obtenido el HTML.
* **Consumo de RAM Mínimo:** No requiere levantar subprocesos de Chromium ni inferencia por IA.
* **Perfecto para Portales de Datos:** Ideal para portales gubernamentales u oficinas de estadística que listan descargas públicas en tablas estáticas.

### Desventajas:
* **Inútil contra Contenidos Dinámicos:** Si los enlaces se generan mediante JavaScript en caliente al hacer clic, o mediante peticiones API de fondo, esta estrategia no encontrará nada.
* **Vulnerable a Bloqueos:** No esquiva retos anti-bot complejos por sí sola (requiere soporte de Playwright/Stealth).