Skip to content

Cespial/marinilla_empleos

Repository files navigation

Scraper de Empleo — Oriente Antioqueño

Scraper multi-fuente de ofertas laborales para los 23 municipios del Oriente Antioqueño (Colombia). Recopila, almacena, analiza y exporta vacantes de 8 plataformas de empleo diferentes.

Municipios cubiertos (4 zonas)

Zona Municipios
Altiplano (9) Marinilla, Rionegro, El Santuario, La Ceja, El Carmen de Viboral, Guarne, El Retiro, La Unión, San Vicente Ferrer
Embalses (7) El Peñol, Guatapé, San Carlos, San Rafael, Granada, Alejandría, Concepción
Páramo (4) Sonsón, Nariño, Argelia, Abejorral
Bosques (3) Cocorná, San Francisco, San Luis

Fuentes de scraping

Fuente Método Detalle
Computrabajo HTML paginado (Playwright)
ElEmpleo HTML paginado (Playwright)
Indeed HTML paginado (Playwright)
Comfama HTML paginado (Playwright)
LinkedIn HTML paginado (Playwright) No (requiere login)
SENA Cartelera AJAX + JSON-LD
Comfenalco Descarga y parseo de PDF No
Magneto365 HTML SSR + JSON-LD

Arquitectura

marinilla_empleos/
├── main.py                 # Punto de entrada CLI
├── config.py               # Configuración central (municipios, fuentes, slugs)
├── database.py             # SQLite: crear tablas, insertar, consultar
├── analisis_oferta.py      # Análisis NLP: cargos, salarios, skills, distribución
├── exportar_base.py        # Exportación a Excel/CSV con columnas calculadas
├── scraper.py              # Scraper legacy (Computrabajo directo)
├── requirements.txt
└── scrapers/
    ├── __init__.py
    ├── base.py             # BaseScraper (Template Method pattern)
    ├── factory.py          # Factory: instancia scrapers por nombre
    ├── orchestrator.py     # Orquestador: ejecuta scrapers en paralelo
    ├── utils.py            # Utilidades: delays, stealth JS, user-agents
    ├── dedup.py            # Deduplicación cruzada entre fuentes
    ├── computrabajo.py
    ├── elempleo.py
    ├── indeed.py
    ├── comfama.py
    ├── linkedin.py
    ├── sena.py
    ├── comfenalco.py
    └── magneto.py

Instalación

# Clonar el repositorio
git clone https://github.com/Cespial/marinilla_empleos.git
cd marinilla_empleos

# Crear entorno virtual (recomendado)
python -m venv venv
source venv/bin/activate  # macOS/Linux

# Instalar dependencias
pip install -r requirements.txt

# Instalar navegadores para Playwright
playwright install chromium

Uso

Listar fuentes disponibles

python main.py --list-sources

Ejecutar scraping completo

# Todas las fuentes, todos los municipios
python main.py

# Solo fuentes específicas
python main.py --sources computrabajo elempleo magneto

# Solo municipios específicos
python main.py --municipios Marinilla Rionegro Guatapé

Modo demo (sin scraping real)

# Carga ~37 ofertas de ejemplo y ejecuta análisis
python main.py --demo

Exportar base de datos a Excel/CSV

# Con datos demo exhaustivos (~176 ofertas, 23 municipios, 24 sectores)
python exportar_base.py --demo

# Exportar datos reales existentes
python exportar_base.py

Solo análisis (requiere datos previos)

python main.py --analisis

Reporte de duplicados cruzados

python main.py --dedup-report

Análisis generado

El reporte incluye:

  1. Top 10 cargos más solicitados
  2. Análisis salarial: promedio, mediana, distribución por rangos
  3. Top 20 skills extraídas por NLP de las descripciones
  4. Distribución por municipio
  5. Distribución por fuente

Exportación Excel

El archivo .xlsx generado contiene 5 hojas:

Hoja Contenido
Ofertas_Laborales Todas las ofertas con 17 columnas
Resumen_Sector Ofertas y salario promedio por sector económico
Resumen_Municipio Ofertas y salario promedio por municipio
Resumen_Fuente Ofertas por fuente de scraping
Top_Skills 30 skills más frecuentes

Columnas calculadas

  • sector_economico — Clasificación automática (24 sectores: Textil, Floricultura, Turismo, Hidroeléctrica, Minería, Café, etc.)
  • nivel_formacion — Profesional, Tecnólogo, Técnico, Bachiller, Certificación Específica
  • tipo_contrato — Indefinido, Término fijo, Obra o labor, Prestación de servicios, Temporal
  • salario_min / salario_max / salario_promedio — Valores numéricos extraídos
  • skills_detectadas — Excel, inglés, licencias, certificaciones, etc.

Tecnologías

  • Python 3.10+
  • Playwright — Navegación headless con stealth anti-detección
  • BeautifulSoup4 — Parsing HTML
  • pandas — DataFrames, análisis, exportación
  • NLTK — Procesamiento de lenguaje natural (tokenización, stopwords)
  • pdfplumber — Extracción de datos de PDFs (Comfenalco)
  • openpyxl — Generación de archivos Excel
  • SQLite — Base de datos local

Licencia

MIT

About

Scraper multi-fuente de empleo para el Oriente Antioqueño — 23 municipios, 8 fuentes (Computrabajo, ElEmpleo, Indeed, Comfama, LinkedIn, SENA, Comfenalco, Magneto365) — Python

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages