{"id":25978440,"url":"https://github.com/thewizardshell/portalscraper","last_synced_at":"2026-06-04T12:31:29.373Z","repository":{"id":274078835,"uuid":"921837468","full_name":"thewizardshell/PortalScraper","owner":"thewizardshell","description":"PortalScraper es un scraper que extrae información detallada de propiedades desde Portal Inmobiliario.","archived":false,"fork":false,"pushed_at":"2025-02-10T23:28:01.000Z","size":11226,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-13T22:37:16.733Z","etag":null,"topics":["golang","goquery","scraper","scraping"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thewizardshell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-24T17:56:28.000Z","updated_at":"2025-02-10T23:21:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"2c3d2535-ad07-4501-b8e7-a3f281b651ea","html_url":"https://github.com/thewizardshell/PortalScraper","commit_stats":null,"previous_names":["vicenteroa/portalscraper","thewizardshell/portalscraper"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewizardshell%2FPortalScraper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewizardshell%2FPortalScraper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewizardshell%2FPortalScraper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewizardshell%2FPortalScraper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thewizardshell","download_url":"https://codeload.github.com/thewizardshell/PortalScraper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241971024,"owners_count":20050760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","goquery","scraper","scraping"],"created_at":"2025-03-05T05:26:53.793Z","updated_at":"2026-06-04T12:31:29.366Z","avatar_url":"https://github.com/thewizardshell.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PortalScraper 🏠\n\n![image](https://github.com/user-attachments/assets/2ff7c8d9-9e99-4f45-ad74-f1c7c59c6514)\n\n\u003cdiv align=\"center\"\u003e\n\n![GitHub](https://img.shields.io/github/v/release/vicenteroa/PortalScraper?logo=github\u0026style=flat-square)\n![Creator](https://img.shields.io/badge/Creator-Vicente%20Roa-blue?style=flat-square)\n\u003ca href=\"https://www.deepseek.com/\" target=\"_blank\" style=\"margin: 2px;\"\u003e\n\u003cimg alt=\"Homepage\" src=\"https://github.com/deepseek-ai/DeepSeek-V2/blob/main/figures/badge.svg?raw=true\" style=\"display: inline-block; vertical-align: middle;\"/\u003e\n\u003c/a\u003e\n\n  \u003c/div\u003e\nSistema de análisis inteligente para el mercado inmobiliario Plataforma integral para extracción, procesamiento y análisis predictivo de datos de propiedades. Su propósito es optimizar el tiempo de búsqueda en portale inmobiliarios y detectar oportunidades en el sector\n\n## Descargar la última versión\n\nPuedes descargar la última versión del ejecutable haciendo clic en el siguiente botón:\n\n[![Descargar](https://img.shields.io/badge/Descargar-PortalScraper-blue?style=for-the-badge\u0026logo=github)](https://github.com/vicenteroa/PortalScraper/actions/workflows/build.yml)\n\n## Diseño del Sistema 🧠\n\n### Arquitectura General\n\n```mermaid\ngraph TD\n    subgraph Go_Application[\"Aplicación Go\"]\n        subgraph MAIN[\"cmd/portal-inmobiliario\"]\n            A[main.go]:::go\n        end\n\n        subgraph MODELS[\"internal/models\"]\n            B[property.go]:::go\n        end\n\n        subgraph SCRAPER[\"internal/scraper\"]\n            C[scraper.go]:::go\n            D[client.go]:::go\n            E[utils.go]:::go\n        end\n\n        subgraph OLLAMA_CLIENT[\"internal/ollama\"]\n            F[client.go]:::go\n        end\n\n        A --\u003e|Importa| B\n        A --\u003e|Importa| C\n        A --\u003e|Usa| F\n        C --\u003e|Usa| D\n        C --\u003e|Usa| E\n    end\n\n    subgraph Docker_Environment[\"Entorno Docker\"]\n        OLLAMA_SERVICE[\"Ollama Service\n        🐳 image: ollama/ollama\n        📍 port: 11434\n        💾 volume: ollama\"]:::docker\n\n        MODELO[\"Modelo deepseek-r1:1.5b\n        ⬇️ pull: ollama pull deepseek-r1:1.5b\"]:::model\n\n        OLLAMA_SERVICE --\u003e|Carga| MODELO\n    end\n\n    Go_Application --\u003e|HTTP Request| OLLAMA_SERVICE\n    OLLAMA_CLIENT --\u003e|Usa| G[encoding/json]:::library\n    OLLAMA_CLIENT --\u003e|Usa| H[net/http]:::library\n    SCRAPER --\u003e|Usa| I[goquery]:::library\n\n    classDef go fill:#e3f2fd,stroke:#2196f3,stroke-width:2px;\n    classDef docker fill:#e8f5e9,stroke:#4caf50,stroke-width:2px;\n    classDef model fill:#f0f4c3,stroke:#cddc39,stroke-width:2px;\n    classDef library fill:#f3e5f5,stroke:#ab47bc,stroke-width:1px;\n```\n\n---\n\n## **Elección de Tecnologías**\n\n#### **Go (Golang)**\n\n- **Motivación principal**:\n\n  - Lenguaje Compilado\n  - Manejo eficiente de memoria para operaciones I/O intensivas (scraping web).\n  - Aunque no usa goroutines actualmente, permite escalar fácilmente a concurrencia con bajo costo (2KB por goroutine vs 1MB por thread en otros lenguajes).\n\n- **Ventajas sobre Python**:\n  - Tipado fuerte previene errores en transformaciones complejas de datos.\n  - Compilación nativa reduce dependencias en producción.\n  - Rendimiento predecible en scraping de larga duración.\n\n**Validación Técnica Revisada (Basada en Documentación DeepSeek Proporcionada):**\n\n| **Criterio**                  | **Requerimiento del Sistema** | **Capacidad del Modelo**                                                                                      | **Fuente Directa (Documentación DeepSeek)**                                                                                             |\n| ----------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| **Razonamiento Estructurado** | Análisis jerárquico UF/m²     | Arquitectura de pensamiento en dos fases: `\u003cthink\u003e` (análisis interno) y `\u003canswer\u003e` (respuesta estructurada). | _Sección 2.3.3_: \"Generación de hipótesis con validación iterativa mediante etiquetas XML para claridad en el proceso de razonamiento\". |\n| **Eficiencia en CPU**         | Latencia \u003c4s por solicitud    | Modelo de 1.5B parámetros con optimización para inferencia en CPU mediante técnicas de cuantización.          | _Sección 2.3.2_: \"Entrenamiento con recompensa de consistencia de lenguaje para reducir carga computacional en inferencia\".             |\n| **Consistencia Lógica**       | Auditoría trazable            | Mecanismo GRPO (Group Relative Policy Optimization) para evaluación comparativa de respuestas.                | _Ecuación 1_: Definición formal de GRPO como método de optimización basado en ventajas relativas dentro de grupos de respuestas.        |\n\n---\n\n**Selección del Modelo DeepSeek-R1 para Análisis Inmobiliario**  \nLa elección de DeepSeek-R1 se fundamenta en su capacidad única para combinar **razonamiento estructurado** y **optimización eficiente**, respaldada por un rendimiento excepcional en tareas que demandan precisión. Con un **96.3% de éxito en resolución de problemas complejos (Codeforces)** y un **79.8% en AIME 2024**, supera a modelos como OpenAI-o1-1217 y otros en escenarios que requieren validación rigurosa de datos, como el cálculo de ratios UF/m² o la detección de anomalías estadísticas.\n\nSu arquitectura `\u003cthink\u003e` garantiza transparencia al desglosar cada análisis en pasos lógicos:\n\n```xml\n\u003cthink\u003e\n1. Validar datos: Precio UF ($2300) vs m² reportado (120m²)\n2. Calcular ratio: 19.16 UF/m²\n3. Comparar con percentil 25 de la zona (22.5 UF/m²)\n\u003c/think\u003e\n\u003canswer\u003eOPORTUNIDAD: 14.8% bajo valor de mercado\u003c/answer\u003e\n```\n\nEl modelo emplea **GRPO (Group Relative Policy Optimization)** para generar hasta 4 respuestas por consulta y seleccionar la más robusta mediante comparación grupal, asegurando decisiones estadísticamente sólidas. Complementado con su entrenamiento mediante **\"Reinforcement Learning with Cold Start\"** —una fase inicial con datos especializados—, el sistema se adapta , identificando patrones como variaciones estacionales en arriendos o oportunidades de valorización geográfica.\n\n**Evaluación Comparativa del Modelo DeepSeek-R1:**\n\n- **Razonamiento Avanzado:** Lidera con un **97.3% en MATH-500**, destacándose en tareas matemáticas complejas.\n- **Análisis General:** Supera en **GPQA Diamond (75.7%)** y **MMLU (90.8%)**, mostrando un manejo sobresaliente en tareas de razonamiento general y multi-dominio.\n- **Eficiencia Operativa:** Con solo **1.9 GB de consumo de memoria en CPU**, procesa cientos de propiedades en minutos.\n\nEsta sinergia entre precisión numérica, adaptabilidad y optimización lo convierte en una herramienta clave para análisis inmobiliarios avanzados.\n\n---\n\n## Componentes Técnicos ⚙️\n\n### Estructura Modular\n\n| Módulo        | Responsabilidades                   | Tecnologías Clave           |\n| ------------- | ----------------------------------- | --------------------------- |\n| Adquisición   | Extracción y validación web         | GoQuery, HTTP Client        |\n| Procesamiento | Normalización y almacenamiento      | Go Structs, Regex           |\n| Análisis      | Inferencia y generación de insights | Ollama API, Modelo Deepseek |\n| Presentación  | Formateo de salida                  | Tabwriter, Text Templates   |\n\n### Dependencias Principales\n\n```mermaid\ngraph TD\n    A[Main Application] --\u003e B[GoQuery]\n    A --\u003e C[Ollama Client]\n    C --\u003e D[Docker Engine]\n    D --\u003e E[Deepseek Model]\n    B --\u003e F[Portal Inmobiliario]\n```\n\n---\n\n## Requisitos Técnicos 📋\n\n### Configuración Mínima\n\n- **Entorno de Ejecución**:\n  - Go 1.20+\n  - Docker 24.0+\n  - 8GB RAM disponible\n\n---\n\n## Procedimiento de Implementación 🚀\n\n1. **Inicialización del Entorno AI**:\n\n   ```bash\n   docker-compose up -d\n   docker-compose exec ollama ollama pull deepseek-r1:parametro\n   ```\n\n2. **Ejecución del Sistema**:\n\n   ```bash\n   go run .cmd/portal-inmobiliario/main.go\n   ```\n\n3. **Salida Esperada**:\n\n   ```plaintext\n   [ANÁLISIS] Propiedades procesadas: 23\n   ...\n   ...\n   ..\n\n   ....\n   ...\n   \u003cthink\u003e\u003c/think\u003e\n   ....\n   ..\n   ..\n\n   ...\n   [OPORTUNIDAD] #142: Ratio UF/m² 27.3 (18.2% bajo promedio sector)\n   [RECOMENDACIÓN] Considerar evaluación detallada por potencial de valorización\n   ```\n\n---\n\n# ¡Gracias por usar **PortalScraper**! 🎉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthewizardshell%2Fportalscraper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthewizardshell%2Fportalscraper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthewizardshell%2Fportalscraper/lists"}