Job Scraping: Una Guía para Recoger Datos Públicos del Mercado Laboral
TL;DR
El scraping de empleos recopila anuncios de trabajo públicos o expresamente autorizados y los convierte en registros consistentes. Puede apoyar la investigación del mercado laboral, el análisis de la demanda de contratación y la planificación de la fuerza laboral, pero una publicación describe un anuncio, no a un solicitante o una contratación confirmada.
Prefiera una API oficial de empleos o un feed con licencia cuando cubra sus necesidades. Para páginas web permitidas, capte solo los campos de publicación relevantes para el negocio, mantenga las marcas de tiempo de origen y observación, elimine duplicados y elimine registros expirados de acuerdo con su política de retención. La visibilidad pública no significa derechos de recopilación o redistribución ilimitados.
¿Qué es el Scraping de Empleos?
El scraping de empleos es la recopilación asistida por software de datos de anuncios de trabajo de una fuente como una página de carreras de la empresa, un tablón de anuncios de empleo público o un feed autorizado. Un registro útil podría incluir el empleador, el título del puesto, la ubicación, el tipo de empleo, la gama salarial si se publica, la fecha de publicación, la URL de origen y la fecha en que su sistema lo observó.
Los equipos utilizan los datos resultantes para estudiar la demanda de habilidades, la geografía de contratación, las divulgaciones de compensación, los patrones de trabajo remoto y los cambios en la actividad de reclutamiento de una empresa. Estas son señales agregadas. Una publicación puede estar duplicada, permanecer en línea después de que un puesto se cierra, o publicarse para construir un grupo de candidatos sin una contratación inmediata. Trátelo como evidencia de un rol publicitado, no como prueba de un puesto ocupado o un proyecto financiado.
Para páginas públicas permitidas que necesitan renderizado en el navegador o Markdown limpio, Nstdata Crawl puede proporcionar la capa de obtención; los permisos de origen y la validación posterior siguen siendo parte de su flujo de trabajo.
Descubre Nstproxy Crawl - Empieza Tu Prueba Gratuita Hoy
Prueba Nstdata Gratis →
Fuentes de Datos del Mercado Laboral y Métodos de Recopilación
Elija la fuente antes de elegir el scraper. Una API publicada puede ofrecer campos estables y términos de acceso explícitos; un feed con licencia puede ofrecer una cobertura más amplia; una página pública puede ser la única fuente para un empleador particular. Compare la cobertura, la cadencia de actualización, la geografía, los identificadores, los límites de tasa, el acceso histórico y los derechos para almacenar o redistribuir los datos.
La referencia de API de USAJOBS documenta una forma estructurada de acceder a anuncios de trabajo federales. Para tendencias del mercado laboral, el programa JOLTS de la Oficina de Estadísticas Laborales publica medidas agregadas de vacantes, contrataciones y separaciones. El Manual de Perspectivas Ocupacionales agrega contexto ocupacional. Esas fuentes responden a diferentes preguntas: una lista de API es un anuncio individual, mientras que una serie estadística es una medida agregada.
Si utiliza una fuente HTML, mantenga una lista de fuentes aprobadas y registre los términos relevantes, el propósito de recopilación y los campos esperados. Evite páginas que requieran un inicio de sesión personal o expongan perfiles de candidatos, currículos, detalles de contacto o estado de solicitudes. No intente eludir los controles de acceso cuando se deniegue una solicitud.
¿Qué Datos de Empleo Debe Recopilar?
Mantenga los campos que apoyen un análisis nombrado. Un esquema compacto podría verse así:
Campo
Por qué mantenerlo
Verificación de calidad
fuente y URL de origen
Rastrear el anuncio original
Canonizar redireccionamientos y preservar el enlace exacto de la página
empleador y título del puesto
Agrupar trabajos y comparar la demanda
Mantener el texto original junto a valores normalizados
ubicación y arreglo laboral
Analizar la geografía y roles remotos
Separar ciudad, región, país y estado remoto
tipo de empleo
Distinguir listados de tiempo completo, contrato e internados
Almacenar lo desconocido como nulo en lugar de adivinar
rango salarial y moneda
Comparar la compensación divulgada
Preservar el mínimo, máximo, período y redacción de origen
fechas de publicación y observación
Medir frescura y cadencia de publicación
Mantener la fecha de origen separada del tiempo de rastreo
estado y fecha de expiración
Evitar contar vacantes desactualizadas
Volver a verificar la fuente y retener un motivo de cierre
hash de descripción
Detectar ediciones sin almacenar texto duplicado innecesario
Versionar la lógica de análisis y hash
Evite recopilar información sobre solicitantes. No infiera la identidad de una persona, detalles de contacto o estado laboral a partir de un anuncio de empleo. Cuando una descripción contenga información personal por error, exclúyala del conjunto de datos posterior y siga el procedimiento de eliminación de su organización.
Cómo Recopilar Listados de Empleos Públicos con Nstdata Crawl
Para la investigación del mercado laboral, comience con una API oficial o un flujo de datos permitido cuando uno esté disponible. Por ejemplo, la documentación de la API de USAJOBS describe su API de búsqueda de empleo. Use el rastreo para páginas de carrera públicas cuando la fuente permita el acceso automatizado. No recopile información del solicitante ni contenido que requiera un inicio de sesión.
Nstdata Crawl recupera una página y puede devolver su contenido principal como Markdown. Eso le da texto fuente legible para almacenar o procesar; no convierte automáticamente cada página de carrera en campos de trabajo estandarizados. El SDK de Python actual y las opciones de solicitud están documentados en la documentación de Nstdata Crawl.
Mantenga la clave en una variable de entorno o en un administrador de secretos; no la comita en el control de versiones.
2. Recupere páginas de trabajo y guarde su Markdown
Utilice una lista curada de URLs de detalles de trabajos públicos. Las URLs a continuación son marcadores de posición; reemplácelas con páginas de fuentes que tiene permiso para rastrear.
import json
import os
import re
from datetime import datetime, timezone
from nstdata_ai_crawl import( Format, NstDataClient, ScrapeRequestDto,)job_urls =["https://careers.example.com/jobs/123","https://careers.example.com/jobs/456",]deffirst_heading(markdown:str)->str|None:for line in markdown.splitlines():match= re.match(r"^\s*#{1,3}\s+(.+?)\s*#*\s*$", line)ifmatch:returnmatch.group(1).strip()returnNonedeflabeled_value(markdown:str, labels:list[str])->str|None:"""Ejemplo para páginas que exponen campos como 'Ubicación: ...'."""for raw_line in markdown.splitlines(): line = re.sub(r"[*_]","", raw_line).strip() line = re.sub(r"^[-*]\s+","", line)for label in labels: prefix =f"{label}:"if line.casefold().startswith(prefix.casefold()):return line[len(prefix):].strip()orNonereturnNonedefparse_job(url:str, markdown:str)->dict:return{"source_url": url,"observed_at": datetime.now(timezone.utc).isoformat(),# Valide este candidato contra el diseño de la página del sitio objetivo."title_candidate": first_heading(markdown),"employer": labeled_value(markdown,["Empresa","Empleador"]),"location": labeled_value(markdown,["Ubicación"]),"employment_type": labeled_value( markdown,["Tipo de empleo","Tipo de trabajo"]),"salary_text": labeled_value(markdown,["Salario","Compensación"]),# Preserve el texto original para que el análisis posterior se pueda corregir."description_markdown": markdown,}records =[]failures =[]with NstDataClient(os.environ["NSTDATA_API_TOKEN"])as client:for url in job_urls:try: result = client.submit_scrape_task_sync( ScrapeRequestDto( url=url, formats=[Format.MARKDOWN], timeout=60_000, onlyMainContent=True,)) markdown = result.data.get_markdown()ifnot markdown ornot markdown.strip(): failures.append({"source_url": url,"reason":"empty_markdown"})continue records.append(parse_job(url, markdown))except Exception as exc: failures.append({"source_url": url,"error_type":type(exc).__name__,})withopen("jobs.jsonl","w", encoding="utf-8")as output_file:for record in records: output_file.write(json.dumps(record, ensure_ascii=False)+"\n")withopen("job_scrape_failures.jsonl","w", encoding="utf-8")as error_file:for failure in failures: error_file.write(json.dumps(failure, ensure_ascii=False)+"\n")print(f"Guardados {len(records)} registros; {len(failures)} páginas necesitan revisión.")
El analizador de etiquetas es intencionadamente simple: solo funciona cuando una página presenta campos en líneas reconocibles como Location: Boston. Los sitios de empleo utilizan diferentes diseños, así que inspecciona el Markdown y adapta parse_job para cada fuente. Trata el primer encabezado como un título candidato y valídalo; algunos sitios utilizan un encabezado genérico como "Carreras." Mantén los detalles de salario o empleo que faltan vacíos en lugar de inferirlos.
3. Rastreo de una sección de carreras delimitada
Si las páginas de detalles de trabajo están vinculadas desde una sección de carreras, Nstdata también admite el rastreo asincrónico de sitios. Establece límites como maxDepth y maxPages para mantener el descubrimiento dentro del alcance, luego verifica el estado de la tarea y recupera sus resultados utilizando las API de tareas descritas en la documentación. Un rastreo a nivel de sitio es útil para descubrir páginas vinculadas; no elimina la necesidad de validar qué URLs son listas de trabajos o de analizar la estructura de la página de cada sitio.
4. Validar y mantener el conjunto de datos
Antes de usar los registros para análisis, verifica que cada URL sea una página de detalle de trabajo permitida, confirma el título y la ubicación con respecto a la fuente, y revisa los fallos y resultados vacíos. Elimina duplicados utilizando un ID de trabajo estable de la fuente cuando esté disponible; de lo contrario, utiliza una URL canónica normalizada. Almacena observed_at para que puedas distinguir cuándo se recolectó una lista de cuándo la publicó originalmente el empleador.
Este flujo de trabajo produce un conjunto rastreable de contenido público de páginas de trabajo. El Markdown es el registro fuente; los campos estructurados son un paso de análisis fuente-específico separado.
¿Cuánto cuesta la recolección de datos de empleo?
Compara el costo total de tres enfoques: usar una API oficial o un feed con licencia, mantener tu propio analizador y utilizar una API de rastreo gestionada para fuentes que permitan el acceso automatizado.
Una API o feed puede reducir el tiempo de ingeniería, pero los términos de cobertura y reutilización son importantes. Un script autogestionado tiene costos de infraestructura más el trabajo recurrente de actualizar selectores, manejar reintentos y revisar cambios en la fuente. Un servicio gestionado puede reducir las operaciones de navegador y proxy, mientras que tu aplicación aún posee la programación, limpieza de datos, almacenamiento y gobernanza de la fuente.
Usa el costo por publicación aceptada y actual en lugar del costo por solicitud:
Para un ejemplo de estimación, completa tu propia tarifa de ingeniería por hora, número de fuentes, volumen de extracción, porcentaje de registros duplicados o expirados y período de almacenamiento. Si una fuente cambia con frecuencia o genera muchas páginas inutilizables, el precio de solicitud más barato puede no producir el costo más bajo por publicación válida. Trata cualquier estimación como un modelo hasta que hayas medido una muestra representativa.
Consideraciones legales, de privacidad y de calidad de datos
Revisa los términos de la fuente, políticas de API, guías para robots, reglas de privacidad, licencias y tu uso previsto antes de la recolección. Los anuncios de trabajo públicos no son un conjunto de datos sin restricciones. Los derechos de reutilización pueden diferir entre visualizar una página, retener una copia, redistribuir registros derivados y utilizar los datos para decisiones comerciales.
Almacena solo los campos necesarios para el propósito declarado. Mantén un cronograma de retención y un proceso para eliminar registros obsoletos o fuera de alcance. Limita el acceso a las descripciones recolectadas y evita utilizar el conjunto de datos para perfilar a solicitantes individuales. Si los datos pueden afectar decisiones de empleo u otra decisión de alto impacto, obtén revisión legal y de privacidad antes de confiar en ellos.
La calidad de los datos necesita cuidado igual. Los títulos de trabajo varían entre empleadores; las divulgaciones salariales pueden ser anuales, por hora o faltar; un rol puede ser reflejado en varias ubicaciones; y la fecha de una página puede reflejar una edición en lugar de la publicación original. Mantén los valores en bruto, documenta las reglas de normalización y reporta las ausencias en lugar de llenarlas con conjeturas.
Cómo construir un pipeline de datos de mercado laboral confiable
Un flujo práctico recurrente es:
Programar la recolección. Elige una cadencia basada en la frecuencia de actualización de la fuente y la línea de tiempo de decisiones. Revisiones diarias pueden ser suficientes para muchos análisis de mercado.
Extraer dentro del alcance aprobado. Usa la API oficial primero donde sea adecuado; de lo contrario, recoge solo las páginas públicas permitidas.
Normalizar campos. Preserva las cadenas originales y agrega campos normalizados de ubicación, tipo de empleo y compensación.
Eliminar duplicados. Prefiere un ID de fuente. Si no está disponible, combina empleador, título, ubicación y una huella de descripción normalizada, luego revisa las coincidencias ambiguas.
Detectar listados obsoletos. Revisa nuevamente si una publicación aún existe. Márquela como cerrada o no disponible con una fecha en lugar de eliminar la historia inmediatamente.
Almacenar historial. Mantén las observaciones como versiones fechadas para que los analistas puedan distinguir un nuevo trabajo de un listado editado.
Medir cobertura y calidad. Realiza seguimiento del éxito de extracción, tasa de campo válido, tasa de duplicados, tasa de registros obsoletos y costo por publicación aceptada.
Una tabla de publicaciones mínima puede contener un ID interno estable, ID de origen, empleador, título, campos de ubicación, rango salarial y moneda, tipo de empleo, URL de origen, hora de primera vista, hora de última vista, estado, hash del contenido y versión del analizador. Integre el manejo de eliminación y corrección en el diseño antes de la primera ejecución programada.
Conclusión: Construya el Conjunto de Datos Alrededor de la Publicación
El raspado de trabajos es útil cuando un equipo necesita un historial consistente de roles anunciados y puede identificar fuentes que se le permite utilizar. Elija la fuente adecuada, recopile los campos mínimos que apoyen el análisis, preserve las marcas de tiempo y la procedencia, y trate cada registro como una observación que puede necesitar revisión.
El raspado de trabajos es la recopilación de campos de anuncios de trabajo de fuentes públicas o autorizadas y su organización para investigación o análisis. Una publicación indica una vacante anunciada, no una contratación completada.
Q: ¿Cómo puedo recopilar listados de trabajos con Python?
Comience con una API oficial o un feed con licencia donde esté disponible. Para una fuente HTML permitida, use un cliente HTTP o una herramienta de navegador solo dentro de las reglas de acceso de la fuente, analice los campos requeridos y conserve las URL de origen y las marcas de tiempo.
Q: ¿Es legal el raspado de trabajos?
Depende de la fuente, jurisdicción, datos recopilados, almacenamiento y uso previsto. Revise los términos, obligaciones de privacidad, licencias y ley aplicable. La visibilidad pública por sí sola no es permiso para reuso sin restricciones.
Q: ¿Cómo extraigo descripciones de trabajos?
Utilice una fuente estructurada autorizada si es posible. Para páginas permitidas, extraiga la descripción mientras preserve la URL original y la hora de observación, y evite recopilar información de solicitantes o datos de perfil no relacionados.
Q: ¿Cuáles son buenas fuentes para datos del mercado laboral?
Utilice APIs oficiales del mercado laboral y agencias estadísticas para listados estructurados y tendencias agregadas. Las páginas de carreras de empresas y proveedores con licencia pueden añadir cobertura cuando sus términos de acceso y reutilización se ajusten al propósito de investigación.
Una guía práctica para la extracción de trabajos para la investigación de mercado y el análisis de la fuerza laboral. Aprende a elegir fuentes permitidas, normalizar publicaciones y validar un conjunto de datos recurrente.
Marcus Chen
Oct. 21st 2026
Rastrea sitios web completos con una sola solicitud API
99,8% de éxito con renderizado JavaScript
Obtén datos limpios, listos para LLM, en múltiples formatos
Convierte cualquier sitio web en Markdown, HTML, JSON, enlaces, PDF y más, sin gestionar infraestructura de rastreo.