Herramienta de web scraping desarrollada en Python que extrae ofertas de empleo de InfoJobs de forma automatizada. Busca cualquier puesto en cualquier ubicación de España, exporta los datos a CSV/JSON y detecta ofertas nuevas entre ejecuciones.
| Característica | Descripción |
|---|---|
| Búsqueda personalizada | Puesto y ubicación configurables desde consola |
| Paginación automática | Detecta y recorre todas las páginas disponibles |
| Evasión de detección | undetected-chromedriver para evitar bloqueos por fingerprinting |
| Autodetección de Chrome | Detecta automáticamente la versión de Chrome instalada |
| Gestión de cookies | Acepta el banner GDPR de forma automática |
| Detección de captcha | Pausa y espera resolución manual si aparece un captcha |
| Exportación flexible | CSV, JSON o ambos formatos |
| Historial | Detecta ofertas nuevas comparando con ejecuciones anteriores |
| Comportamiento humano | Tiempos aleatorios entre acciones para evitar bloqueos |
| Campo | Fuente | Descripción |
|---|---|---|
| Título | Listado | Nombre del puesto |
| Empresa | Listado | Empresa que publica la oferta |
| Ciudad | Listado | Ubicación del puesto |
| Salario | Listado | Rango salarial si está disponible |
| Contrato | Listado | Tipo de contrato (indefinido, temporal...) |
| Jornada | Listado | Tipo de jornada (completa, parcial...) |
| Experiencia | Detalle | Experiencia requerida (requiere visitar cada oferta) |
| Enlace | Listado | URL directa a la oferta |
Scraper-InfoJobs-Python/
├── main.py # Punto de entrada con menu interactivo
├── configuracion.py # Selectores, tiempos y configuracion centralizada
├── scraper/
│ ├── navegador.py # Chrome, captcha y cookies
│ ├── extractor.py # Extraccion de datos de cada oferta
│ └── paginacion.py # Scroll y cambio de pagina
├── modelos/
│ └── oferta.py # Dataclass que representa una oferta
├── exportar/
│ ├── exportar_csv.py # Exportacion a CSV
│ └── exportar_json.py # Exportacion a JSON
├── historial/
│ └── rastreador.py # Historico y deteccion de ofertas nuevas
├── salida/ # Archivos generados (CSV, JSON, historico)
├── requirements.txt
└── README.md- Python 3.11 o superior
- Google Chrome instalado (cualquier versión, se detecta automáticamente)
git clone https://github.com/DevJuanCR/Scraper-InfoJobs-Python.git
cd Scraper-InfoJobs-Python
pip install -r requirements.txtpython main.pyEl programa te pedirá:
- Puesto a buscar — desarrollador junior, data engineer, diseñador gráfico...
- Ubicación — españa, madrid, barcelona...
- Número de páginas — un número concreto o todas las disponibles
- Formato de exportación — CSV, JSON o ambos
- Extraer experiencia — visita cada oferta para sacar la experiencia requerida (opcional, más lento)
Los resultados se guardan en la carpeta salida/.
========================================
InfoJobs Scraper
========================================
Que puesto quieres buscar? (ej: desarrollador junior): desarrollador junior
En que ubicacion? (ej: españa, madrid, barcelona): madrid
Cuantas paginas quieres scrapear? (0 = todas): 0
Formato de exportacion: 3
Extraer experiencia requerida? s/n: s
--- PAGINA 1 ---
Oferta: Desarrollador/a Junior Salesforce (Grupo Hasten)
Oferta: Programador/a Full Stack Junior (prodereg)
...
--- PAGINA 2 ---
Oferta: Desarrollador Java Junior (NTT Data)
...
Scraping completado: 147 ofertas en 8 paginas
Extrayendo experiencia de 147 ofertas...
[1/147] Desarrollador/a Junior Salesforce -> Al menos 1 año
[2/147] Programador/a Full Stack Junior -> No requerida
...
--- Resumen historico ---
Ofertas encontradas: 147
Ofertas nuevas: 23
Ofertas que ya teniamos: 124
Total en historico: 312
Proceso finalizado[
{
"titulo": "Desarrollador/a Junior Salesforce",
"empresa": "Grupo Hasten",
"ciudad": "Madrid",
"enlace": "https://www.infojobs.net/...",
"salario": "18.000€ - 22.000€ Bruto/año",
"contrato": "Indefinido",
"jornada": "Completa",
"experiencia": "Al menos 1 año"
}
]El scraper guarda un registro en salida/historico/historico.json con todas las ofertas vistas y la fecha en que aparecieron por primera vez. En cada ejecución compara las ofertas actuales con el historial y te muestra cuáles son nuevas. Útil para ejecutarlo periódicamente y no perderte ninguna vacante.
Todos los selectores CSS/XPath, tiempos de espera y configuración del scroll están centralizados en configuracion.py. Si InfoJobs actualiza su estructura HTML, solo hay que modificar los selectores en ese archivo.
- Si aparece un captcha, el script te avisa y espera hasta 2 minutos para que lo resuelvas manualmente.
- La extracción de experiencia requiere visitar cada oferta individualmente, lo que aumenta el tiempo de ejecución y el riesgo de captcha.
- Los selectores dependen de la estructura HTML actual de InfoJobs. Si el portal cambia su diseño, puede ser necesario actualizarlos en
configuracion.py.
Este software ha sido desarrollado con fines educativos para demostrar habilidades de programación y web scraping. No está afiliado ni respaldado por InfoJobs. El uso de scripts automatizados debe realizarse de manera responsable y respetando los términos de servicio del sitio web.
