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.
È legale raschiare davvero?
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.
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 Lavoro | Piattaforme raschianti | |
---|---|---|
Prezzi | Gratis | Piani a pagamento |
Proxy e browser senza testa | Hai bisogno di codice personalizzato | Funzionalità incluse |
Scheduler | Recidiva di base | Opzioni avanzate |
Monitoraggio e avvisi | Nessuna | E-mail e dashboard |
Archiviazione dei risultati | Movimentazione manuale | Archiviazione 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!