Ir al contenido

Su guía paso a paso para extraer datos de Indeed

¡Hola! ¿Quiere extraer ofertas de trabajo de Indeed? Has venido al lugar correcto.

Indeed es uno de los motores de búsqueda de empleo más grandes de la web, con más de 250 millones de visitantes únicos por mes. Se trata de una enorme cantidad de datos sobre ofertas de trabajo, salarios, perfiles de empresas y más.

Desafortunadamente, las API de Indeed no exponen completamente todos estos datos. Ahí es donde entra en juego el web scraping.

En esta guía, lo guiaré paso a paso sobre cómo extraer Indeed usando Python. Compartiré fragmentos de código que puedes usar, junto con consejos para raspar con precisión y evitar que te bloqueen.

También cubriré cómo automatizar el scraping para que se ejecute diariamente, semanalmente o mensualmente. ¡De esa manera podrás mantener los datos de tu lista de trabajos actualizados automáticamente!

Al final, estarás revisando ofertas de trabajo de Indeed como un profesional. ¡Vamos a profundizar en!

¿Por qué eliminar las ofertas de trabajo de Indeed?

Antes de ensuciarnos las manos con algo de código Python, hablemos de porque Es posible que desees extraer datos de Indeed en primer lugar.

Aquí hay sólo unas pocas ideas:

  • Estudio de mercado – Analizar las tendencias de publicación de empleos para identificar habilidades o roles en demanda en aumento. De hecho tiene datos sobre millones de vacantes en todas las industrias.

  • Inteligencia competitiva – Vea qué salarios y beneficios ofrecen las empresas para puestos similares. Útil para comparar sus propios paquetes de compensación.

  • Motores de búsqueda de empleo – Cree bolsas de trabajo personalizadas utilizando datos de Indeed filtrados por palabras clave o ubicaciones específicas.

  • Herramientas de reclutamiento – Realice un seguimiento de las nuevas vacantes que coincidan con las habilidades de los candidatos para descubrir puestos de trabajo relevantes.

  • Análisis de currículum – Extraiga palabras clave y habilidades de las descripciones de puestos para proporcionar sugerencias para mejorar los currículums y las cartas de presentación.

Estos son sólo algunos ejemplos: con datos estructurados enriquecidos sobre ofertas de trabajo, ¡las posibilidades son infinitas!

Ahora veamos cómo extraer esos datos mediante web scraping.

Antes de profundizar en la codificación, quiero abordar rápidamente la legalidad del web scraping. Sé que algunas personas tienen preocupaciones aquí.

La respuesta corta es: extraer datos públicos de Indeed es perfectamente legal en la mayoría de los casos, siempre y cuando sigas algunas reglas básicas:

  • Acceda únicamente a páginas públicas; no intente extraer datos de usuarios privados ni inicios de sesión.

  • No sobrecargue los servidores de Indeed raspando demasiado agresivamente. Siga prácticas educadas de rastreo.

  • Cumplir con los Términos de servicio de Indeed. No prohíben específicamente el web scraping.

  • Evite copiar grandes extractos de texto palabra por palabra para respetar los derechos de autor. Parafrasear está bien.

  • No vuelva a publicar ningún dato privado, personal o confidencial extraído.

Si sigue estas pautas de sentido común, el raspado web de Indeed para obtener datos de ofertas de empleo públicas está legalmente permitido en la mayoría de los países.

Por supuesto, sigo recomendando consultar a un abogado si tiene alguna inquietud, ya que las leyes varían. ¡Pero puedes utilizar Indeed con confianza siempre y cuando seas ético!

Bien, profundicemos en las cosas divertidas: ¡el código real!

Raspado de listados de Indeed con Python

Al realizar scraping en sitios grandes como Indeed, Python es una excelente opción gracias a bibliotecas como Solicitudes, Hermosa sopa y Selenio.

Te guiaré a través de un guión para:

  • Extraiga ofertas de trabajo que coincidan con búsquedas de palabras clave y ubicaciones

  • Analizar detalles como títulos de trabajo, salarios y descripciones.

  • Automatice la paginación para recuperar todos los listados en varias páginas

¡Empecemos!

Importar bibliotecas

usaremos Solicitudes para buscar páginas, Hermosa sopa para analizar, Horario acelerar, y pandas para almacenar datos:

import requests
from bs4 import BeautifulSoup
import time
import pandas as pd

Solicitudes y BeautifulSoup son todo tuyo realmente necesidad. Pero Pandas ayuda a administrar los datos, mientras que Time acelera las solicitudes.

Definir parámetros de búsqueda

Primero, definamos qué ofertas de trabajo queremos. Especifique palabras clave, ubicación y otros filtros:

keywords = "Remote Software Engineer"
location = "United States" 
salary_min = 100000

Esto apunta a trabajos de software remotos bien remunerados en los EE. UU. Ajústese a sus criterios deseados.

Obtener la página de resultados de búsqueda

Con los parámetros establecidos, solicitaremos la URL, pasando nuestras palabras clave y ubicación:

BASE_URL = "https://www.indeed.com/jobs?" 

params = {
  ‘q‘: keywords,
  ‘l‘: location,
  ‘minSalary‘: salary_min,
  ‘remotejob‘: ‘remote‘ # Filter remote jobs  
}

print(f‘Fetching job listings for {keywords} in {location}...‘)

res = requests.get(BASE_URL, params=params)
res.raise_for_status() # Raise exception for 4xx/5xx

Este realiza la consulta de búsqueda inicial, filtrando por nuestras palabras clave y parámetros.

Analizar resultados con BeautifulSoup

A continuación, analizaremos el HTML de la página de resultados de búsqueda para extraer datos de listado de alto nivel:

soup = BeautifulSoup(res.text, ‘html.parser‘)

listings = [] # List to store listings

for div in soup.find_all(‘div‘, class_=‘job_seen_beacon‘):

  title = div.find(‘h2‘).text.strip()

  company = div.find(‘span‘, class_=‘companyName‘).text.strip()

  location = div.find(‘div‘, class_=‘companyLocation‘).text.strip()

  # Append listing data    
  listings.append({
    ‘title‘: title,
    ‘company‘: company, 
    ‘location‘: location
  })

Aquí ubicamos cada listado div, tome los campos clave como título y empresa, y guárdelos en nuestro listings lista.

Manejar paginación

De hecho divide los resultados en varias páginas. Necesitaremos iterar a través de cada uno:

# Track page number 
current_page = 0

while True:

  # Increment page
  current_page += 1 

  print(f‘Scraping page {current_page}...‘)

  # Build URL for next page
  next_page_url = BASE_URL + f‘&start={current_page*10}‘  

  # Fetch page HTML
  res = requests.get(next_page_url, params=params)

  # Parse HTML
  soup = BeautifulSoup(res.text, ‘html.parser‘)   

  # Return if last page
  if not soup.find(‘a‘, {‘aria-label‘: ‘Next‘}):
    print(‘Reached last page!‘)
    break

  # Extract listings
  for div in soup.find_all(...):
    # Extract listing data

  # Sleep to throttle requests  
  time.sleep(3) 

print(f‘Scraped {len(listings)} listings‘)

Aquí incrementamos continuamente el número de página, buscamos la página siguiente, extraemos listados y realizamos un bucle hasta llegar a la última página.

Añadiendo un corto time.sleep() El acelerador ayuda a evitar saturar los servidores de Indeed.

Detalles del listado de scrape

Hasta ahora hemos extraído datos de alto nivel, como títulos y empresas. Para obtener detalles como salarios y descripciones, eliminaremos la URL de cada listado:

from selenium import webdriver

driver = webdriver.Chrome()

# Loop through listings
for listing in listings:

  print(f‘Getting details for {listing["title"]}‘)

  # Load listing URL
  url = listing[‘url‘]  
  driver.get(url)

  # Extract key fields
  desc = driver.find_element_by_id(‘jobDescriptionText‘).text
  salary = driver.find_element_by_class_name(‘salary-snippet‘).text

  listing[‘desc‘] = desc
  listing[‘salary‘] = salary

  # Sleep to throttle
  time.sleep(2)

driver.quit()  

Aquí Selenium proporciona un navegador completo para representar páginas con mucho JavaScript. Cargamos cada URL y extraemos campos adicionales como la descripción y el salario.

Consejo profesional: Considera usar una servicio de proxy para evitar bloqueos de IP al usar Selenium a escala.

¡Y eso es! Con esos pasos, puede eliminar miles de ofertas de trabajo de Indeed automáticamente.

El resultado final son datos de trabajo estructurados que puede analizar o exportar a herramientas como Excel. Veamos a continuación algunos ejemplos.

¿Qué se puede hacer con los datos extraídos de Indeed?

Ahora que podemos extraer listados de Indeed, ¿qué podemos hacer realmente con esos datos?

Aquí hay sólo unas pocas ideas:

Exportar a Excel para análisis

df = pandas.DataFrame(listings)
df.to_excel(‘indeed_listings.xlsx‘, index=False)

Pandas facilita la exportación de resultados a Excel. Esto permite potentes filtros, tablas dinámicas y fórmulas.

Datos de hecho en Excel

Puede analizar tendencias en ubicaciones, salarios, habilidades y más.

Crear bases de datos de búsqueda de empleo

import sqlite3

# Connect to SQLite database
conn = sqlite3.connect(‘jobs.db‘)

# Create table
conn.execute(‘‘‘
  CREATE TABLE jobs (
    title TEXT,
    company TEXT, 
    description TEXT,
    salary REAL  
  );
‘‘‘)

# Insert listings into database
for listing in listings:
  conn.execute("""
    INSERT INTO jobs VALUES (
      ?, ?, ?, ?
    )""", (listing[‘title‘], listing[‘company‘], 
            listing[‘desc‘], listing[‘salary‘]))

conn.commit()
conn.close()

SQLite proporciona una base de datos sencilla para almacenar listados para búsquedas personalizadas. ¡Integre con Flask para crear su propia bolsa de trabajo!

Envíe por correo electrónico listados relevantes a los candidatos

import smtplib
from email.message import EmailMessage

# Connect to SMTP server 
smtp = smtplib.SMTP(‘smtp.domain.com‘)

for listing in listings:

  # Check if listing matches candidate skills  

  if match:

    msg = EmailMessage()
    msg[‘Subject‘] = f‘New job for you - {listing["title"]}‘  
    msg[‘From‘] = ‘[email protected]‘
    msg[‘To‘] = ‘[email protected]‘
    msg.set_content(listing[‘desc‘])

    # Send listing to candidate
    smtp.send_message(msg)

smtp.quit()

Python facilita el envío automático por correo electrónico a los candidatos de nuevos listados que coincidan con sus habilidades e intereses.

Esta es sólo una pequeña muestra: con datos sobre millones de listados, ¡las posibilidades son infinitas!

Ahora veamos cómo ejecutar este raspador automáticamente.

Programación de scraps diarios de Indeed

Si bien el raspado de Indeed en tiempo real es útil, aún más valioso es configurar raspados automatizados y programados para mantener sus datos actualizados.

Aquí hay dos buenas opciones para ejecutar el raspador en un cronograma recurrente fijo:

cron Jobs

Una forma sencilla de automatizar scripts de Python es cron, una utilidad estándar de Linux.

Agregue una entrada como esta para que se publique todos los días a las 8 a. m.:

0 8 * * * python /home/user/indeedScraper.py

Puede programar recurrencias complejas. Pero cron carece de informes si fallan los raspados.

Plataformas raspadoras

Para una programación y automatización más sólidas, recomiendo utilizar una plataforma de scraping dedicada como Scrapy or apificar.

Estos proporcionan automatización del navegador y del proxy para manejar CAPTCHA, bloques y JavaScript. Y tienen incorporada una sencilla programación de trabajos cron.

También recibe alertas por correo electrónico, análisis de rendimiento y opciones de integración. ¡Realmente eliminan el dolor de cabeza de la automatización!

Aquí hay una comparación rápida:

cron JobsPlataformas raspadoras
PreciosGratuitoPlanes pagados
Proxies y navegadores sin cabezaNecesita código personalizadoFunciones incluidas
Programadorrecurrencia básicaOpciones avanzadas
Monitoreo y alertasNingunaCorreos electrónicos y panel de control
Almacenamiento de resultadosManejo manualAlmacenamiento y exportaciones integrados

Para sitios grandes y complejos como Indeed, recomiendo utilizar una plataforma dedicada.. La confiabilidad y las características adicionales valen la pena cuando se realiza raspado a escala.

Recapitulemos

En esta guía aprendiste:

  • ¿Por qué scraping Indeed es útil para investigaciones de mercado, búsqueda de empleo y herramientas de contratación.

  • Cómo extraer listados imitando consultas de búsqueda en Python.

  • Mejores prácticas como limitar las solicitudes y usar proxies para evitar bloqueos.

  • Cómo analizar detalles como salarios y descripciones de las páginas de listado.

  • Opciones de automatización como cron y plataformas de scraping dedicadas para mantener sus datos actualizados.

Los ejemplos de código anteriores deberían brindarle una plantilla para comenzar a recopilar sus propios datos de Indeed. ¡Siéntete libre de modificarlo y desarrollarlo para tu caso de uso!

Solo recuerde respetar los Términos de servicio de Indeed, evitar el scraping demasiado agresivo y seguir una buena higiene del web scraping para mantenerse en el lado correcto de la ley.

Espero que esta guía le haya brindado una descripción general completa de cómo eliminar efectivamente Indeed usando Python. Automatizar estos pasos le permite aprovechar la increíble cantidad de datos de ofertas de empleo de Indeed.

¡Déjame saber si tienes alguna otra pregunta! Siempre estaré feliz de conversar más sobre las mejores prácticas de web scraping.

¡Buena suerte con tu proyecto de scraping de Indeed!

Únase a la conversación

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *