Salta al contenuto

La tua guida passo passo per ricavare dati da Indeed

Ehilà! Stai cercando di recuperare annunci di lavoro da Indeed? Sei nel posto giusto.

Effettivamente è uno dei più grandi motori di ricerca di lavoro sul web, con oltre 250 milioni visitatori unici al mese. Si tratta di un'enorme quantità di dati su offerte di lavoro, stipendi, profili aziendali e altro ancora.

Sfortunatamente, le API di Indeed non espongono completamente tutti questi dati. È qui che entra in gioco il web scraping.

In questa guida ti guiderò passo dopo passo su come eseguire lo scraping di Indeed utilizzando Python. Condividerò frammenti di codice che puoi utilizzare, insieme a suggerimenti per eseguire lo scraping in modo accurato ed evitare di essere bloccato.

Tratterò anche come automatizzare lo scraping per l'esecuzione giornaliera, settimanale o mensile. In questo modo puoi mantenere aggiornati automaticamente i dati dell'elenco dei lavori!

Alla fine, potrai raschiare le offerte di lavoro di Indeed come un professionista. Approfondiamo!

Perché raschiare gli annunci di lavoro di Indeed?

Prima di sporcarci le mani con il codice Python, parliamo di perché potresti voler recuperare i dati da Indeed in primo luogo.

Ecco alcune idee:

  • Ricerche di mercato – Analizzare le tendenze delle offerte di lavoro per identificare competenze o ruoli crescenti nella domanda. Effettivamente dispone di dati milioni di aperture in tutti i settori.

  • Intelligenza competitiva – Scopri quali stipendi e benefit offrono le aziende per ruoli simili. Utile quando si confrontano i propri pacchetti retributivi.

  • Motori di ricerca di lavoro – Crea bacheche di lavoro personalizzate utilizzando i dati di Indeed filtrati in base a parole chiave o posizioni specifiche.

  • Strumenti di reclutamento – Tieni traccia delle nuove opportunità che corrispondono alle competenze dei candidati per far emergere lavori rilevanti.

  • Riprendere l'analisi – Estrai parole chiave e competenze dalle descrizioni dei lavori per fornire suggerimenti per migliorare i curriculum e le lettere di accompagnamento.

Questi sono solo alcuni esempi: con ricchi dati strutturati sulle offerte di lavoro, le possibilità sono infinite!

Ora diamo un'occhiata a come estrarre effettivamente tali dati utilizzando il web scraping.

Prima di immergermi nella codifica, voglio soffermarmi rapidamente sulla legalità del web scraping. So che alcune persone hanno preoccupazioni qui.

La risposta breve è: estrarre i dati pubblici da Indeed lo è perfettamente legale nella maggior parte dei casi, a patto di seguire alcune regole fondamentali:

  • Accedi solo alle pagine pubbliche: non cercare di recuperare dati o accessi privati ​​degli utenti.

  • Non sovraccaricare i server di Indeed effettuando lo scraping in modo troppo aggressivo. Segui pratiche di scansione educate.

  • Rispettare i Termini di servizio di Indeed. Non vietano specificamente il web scraping.

  • Evitare di copiare integralmente grandi estratti di testo per rispettare il copyright. La parafrasi è ok.

  • Non ripubblicare alcun dato privato, personale o sensibile rimosso.

Se segui queste linee guida basate sul buon senso, il web scraping di Indeed per i dati delle offerte di lavoro pubbliche è legalmente consentito nella maggior parte dei paesi.

Naturalmente, consiglio comunque di consultare un avvocato in caso di dubbi, poiché le leggi variano. Ma puoi racimolare Indeed con fiducia finché rimani etico!

Ok, tuffiamoci nelle cose divertenti: il codice vero e proprio!

Raschiare elenchi di Indeed con Python

Quando si raschiano siti di grandi dimensioni come Indeed, Python è un'ottima scelta grazie a librerie come Richieste, Bella zuppa ed Selenio.

Ti guiderò attraverso uno script per:

  • Estrai annunci di lavoro corrispondenti a ricerche di parole chiave e località

  • Analizza dettagli come titoli di lavoro, stipendi e descrizioni

  • Automatizza l'impaginazione per recuperare tutti gli elenchi su più pagine

Iniziamo!

Importa librerie

Lo useremo Richieste per recuperare le pagine, Bella zuppa per l'analisi, Ora accelerare, e Pandas per memorizzare i dati:

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

Requests e BeautifulSoup sono tutto per te veramente Bisogno. Ma Pandas aiuta a gestire i dati, mentre Time limita le richieste.

Definire i parametri di ricerca

Innanzitutto, definiamo quali annunci di lavoro desideriamo. Specifica parole chiave, posizione e altri filtri:

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

Questo mira a lavori software remoti ben retribuiti negli Stati Uniti. Adatta ai criteri desiderati.

Recupera la pagina dei risultati della ricerca

Con i parametri impostati, richiederemo l'URL, passando le nostre parole chiave e la posizione:

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

Questo esegue la query di ricerca iniziale, filtrando in base alle nostre parole chiave e parametri.

Analizza i risultati con BeautifulSoup

Successivamente analizzeremo l'HTML della pagina dei risultati di ricerca per estrarre i dati dell'elenco di alto livello:

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
  })

Qui individuiamo ogni elenco div, prendi i campi chiave come titolo e azienda e archiviali nel nostro listings elenco.

Gestire l'impaginazione

Indeed suddivide i risultati su più pagine. Dovremo scorrere ciascuno di essi:

# 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‘)

Qui incrementiamo continuamente il numero di pagina, recuperiamo la pagina successiva, estraiamo elenchi ed eseguiamo il loop fino a raggiungere l'ultima pagina.

Aggiunta di un breve time.sleep() l'acceleratore aiuta a evitare di sovraccaricare i server di Indeed.

Dettagli dell'elenco di raschiatura

Finora abbiamo estratto dati di alto livello come titoli e aziende. Per ottenere dettagli come stipendi e descrizioni, analizzeremo ogni URL dell'elenco:

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()  

Qui Selenium fornisce un browser completo per il rendering di pagine pesanti con JavaScript. Carichiamo ogni URL ed estraiamo campi aggiuntivi come la descrizione e lo stipendio.

Suggerimento Pro: Considerare l'utilizzo di a servizio proxy per evitare blocchi IP quando si utilizza Selenium su larga scala.

E questo è tutto! Con questi passaggi puoi recuperare automaticamente migliaia di annunci di lavoro da Indeed.

Il risultato finale sono dati di lavoro strutturati che puoi analizzare o esportare in strumenti come Excel. Diamo un'occhiata ad alcuni esempi di seguito.

Cosa puoi fare con i dati Indeed cancellati?

Ora che possiamo analizzare gli elenchi di Indeed, cosa possiamo fare effettivamente con quei dati?

Ecco alcune idee:

Esporta in Excel per l'analisi

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

Pandas semplifica l'esportazione dei risultati in Excel. Ciò consente potenti filtri, tabelle pivot e formule.

Effettivamente dati in Excel

Puoi analizzare le tendenze tra località, stipendi, competenze e altro ancora.

Costruisci database di ricerca di lavoro

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 fornisce un semplice database in cui archiviare elenchi per ricerche personalizzate. Integra con Flask per creare la tua bacheca di lavoro!

Invia tramite e-mail gli elenchi pertinenti ai candidati

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 semplifica l'invio automatico via email ai candidati con nuovi annunci che corrispondono alle loro competenze e interessi.

Questo è solo un piccolo esempio: con dati su milioni di annunci, le possibilità sono infinite!

Ora diamo un'occhiata all'esecuzione automatica di questo raschietto.

Pianificazione degli scrap giornalieri

Sebbene lo scraping di Indeed in tempo reale sia utile, ancora più prezioso è la configurazione scrap automatizzati e programmati per mantenere aggiornati i tuoi dati.

Ecco due buone opzioni per eseguire lo scraper secondo un programma ricorrente fisso:

cron Lavoro

Un modo semplice per automatizzare gli script Python è cron, un'utilità Linux standard.

Aggiungi una voce come questa per l'esecuzione quotidiana alle 8:XNUMX:

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

È possibile pianificare ricorrenze complesse. Ma cron non segnala se gli scrap falliscono.

Piattaforme raschianti

Per una pianificazione e un'automazione più robuste, consiglio di utilizzare una piattaforma di scraping dedicata come Scrapy or Apifica.

Questi forniscono l'automazione del browser e del proxy per gestire CAPTCHA, blocchi e JavaScript. E hanno una semplice pianificazione dei lavori cron integrata.

Ricevi anche avvisi via email, analisi delle prestazioni e opzioni di integrazione. Tolgono davvero il mal di testa dall'automazione!

Ecco un rapido confronto:

cron LavoroPiattaforme raschianti
PrezziGratis Piani a pagamento
Proxy e browser senza testaHai bisogno di codice personalizzatoFunzionalità incluse
SchedulerRecidiva di baseOpzioni avanzate
Monitoraggio e avvisiNessunaE-mail e dashboard
Archiviazione dei risultatiMovimentazione manualeArchiviazione ed esportazioni integrate

Per siti grandi e complessi come Indeed consiglio di utilizzare una piattaforma dedicata. L'affidabilità e le funzionalità aggiuntive valgono il costo quando si esegue lo scraping su larga scala.

Ricapitoliamo

In questa guida hai imparato:

  • Perché scraping Indeed è utile per ricerche di mercato, ricerca di lavoro e strumenti di reclutamento.

  • Come estrarre elenchi imitando le query di ricerca in Python.

  • Buone pratiche come limitare le richieste e utilizzare proxy per evitare blocchi.

  • Come analizzare i dettagli come gli stipendi e le descrizioni dalle pagine degli elenchi.

  • Opzioni di automazione come cron e piattaforme di scraping dedicate per mantenere aggiornati i tuoi dati.

Gli esempi di codice sopra riportati dovrebbero fornirti un modello per iniziare a recuperare i tuoi dati Indeed. Sentiti libero di modificarlo e svilupparlo per il tuo caso d'uso!

Ricorda solo di rispettare i Termini di servizio di Indeed, evitare lo scraping troppo aggressivo e seguire una buona igiene del web scraping per rimanere dalla parte giusta della legge.

Spero che questa guida ti abbia fornito una panoramica completa su come effettuare effettivamente lo scraping di Indeed utilizzando Python. L'automazione di questi passaggi ti consente di sfruttare l'incredibile raccolta di dati sugli annunci di lavoro di Indeed.

Fatemi sapere se avete altre domande! Sono sempre felice di parlare di più sulle migliori pratiche di web scraping.

Buona fortuna con il tuo progetto di scraping Indeed!

Partecipa alla conversazione

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *