Manuale di LinkedIn Scraper & Email Enricher Pro

Configura lo script Python, inserisci URL di profili e genera un CSV locale a partire dalle risposte delle API configurate.

Per chi è: È pensato per chi sa modificare un breve elenco in un file Python e utilizzare il terminale. Devi disporre delle tue chiavi API e gestire i dati di contatto in modo lecito e responsabile.

Tempo di configurazione: Prima configurazione: dipende dall'installazione di Python e dalla disponibilità degli accessi API.

Cosa fa

  • Carica facoltativamente le variabili da un file .env presente nella stessa cartella dello script.
  • Legge gli URL dei profili dalla lista urls definita nel blocco principale di linkedin-scraper.py.
  • Per ogni URL invia una richiesta all'endpoint profilo Proxycurl con le opzioni personal_email, personal_contact_number ed extra impostate su include.
  • Dalla risposta del profilo raccoglie nome, headline, prima azienda nelle esperienze, città, primo valore email disponibile, URL e numero di follower quando presenti.
  • Quando nome e azienda sono disponibili, costruisce un dominio stimato e usa l'endpoint email finder di Hunter.io per richiedere un indirizzo email.
  • Attende un secondo alla fine di ogni iterazione dell'elenco degli URL.
  • Se esiste almeno un risultato, scrive un CSV UTF-8 denominato leads.csv e stampa il contenuto dei risultati in formato JSON nel terminale.

Cosa non fa

  • Non effettua accesso a LinkedIn e non contiene automazione del browser o scraping diretto del sito LinkedIn.
  • Non offre un'interfaccia grafica, argomenti da riga di comando, importazione di URL da CSV o invio diretto a un CRM.
  • Non esegue la funzione search_company_employees dal normale avvio; quella funzione è definita nel codice ma non viene chiamata dal blocco principale.
  • Non verifica nello script lo stato di verifica di un'email restituita da Hunter.io e non convalida il dominio stimato dell'azienda.
  • Non crea automaticamente account, chiavi API, consenso al contatto o una privacy notice.

Requisiti

  • Python 3: Serve un'installazione funzionante di Python e l'accesso al terminale. Il pacchetto non dichiara una versione minima specifica di Python.
  • Dipendenze Python: requirements.txt richiede requests==2.31.0 e python-dotenv>=1.0.0.
  • Chiave API Proxycurl: È necessaria per la richiesta dei profili. Il README dichiara che è disponibile un piano gratuito; condizioni, disponibilità e costi vanno verificati sul listino del provider.
  • Chiave API Hunter.io: È necessaria per la ricerca email. Il README menziona 25 ricerche gratuite al mese; verifica condizioni, disponibilità e costi direttamente con il provider.
  • Connessione Internet: Lo script effettua richieste HTTP alle API di Proxycurl e Hunter.io durante l'esecuzione.
  • Editor di testo e URL autorizzati: Ti serve un editor per modificare il file .env e la lista urls, oltre a URL di profili che puoi trattare lecitamente.

Installazione passo passo

  1. Estrai lo ZIP e controlla i file consegnati. Estrai linkedin-scraper-email-enricher.zip in una cartella di lavoro. I file consegnati sono README.md, README.en.md, linkedin-scraper.py e requirements.txt. Il README cita .env.example, ma questo template non è presente nell'archivio: dovrai creare .env manualmente nel passaggio 6.
  2. Verifica Python. Apri un terminale nella cartella di lavoro e controlla che il comando Python sia disponibile. Se non lo è, installa Python con la procedura standard del tuo sistema operativo e riapri il terminale.
  3. Entra nella cartella estratta. Sostituisci il percorso segnaposto con la cartella in cui hai estratto il pacchetto.
  4. Crea e attiva un ambiente virtuale. Un ambiente virtuale mantiene le dipendenze del pacchetto separate da altri progetti Python. I comandi mostrati sono per shell compatibili con macOS o Linux; su Windows crea lo stesso ambiente e attivalo con il comando previsto dalla tua shell.
  5. Installa le dipendenze consegnate. Con l'ambiente virtuale attivo, installa esattamente le dipendenze elencate in requirements.txt.
  6. Crea il file .env con le tue chiavi. Nella stessa cartella di linkedin-scraper.py crea un file di testo chiamato .env. Inserisci le due righe seguenti sostituendo i segnaposto con le tue chiavi. Non incollare o condividere chiavi reali in chat, documenti pubblici o repository.
  7. Sostituisci l'URL di esempio. Apri linkedin-scraper.py. Nel blocco finale sostituisci l'URL di esempio nella lista urls con uno o più URL di profili che puoi usare legittimamente. Lascia ogni URL tra virgolette e separa gli elementi con una virgola.
  8. Controlla dati, finalità e limiti del provider. Prima di avviare lo script, verifica di avere una base giuridica e le informative necessarie per trattare eventuali dati personali. Rispetta termini d'uso, istruzioni API, limiti di richiesta e politiche dei provider; la pausa di un secondo nel codice non sostituisce tali obblighi.
  9. Avvia lo script con chiavi valide. Esegui il comando dalla cartella contenente .env e linkedin-scraper.py. Lo script invierà richieste alle API esterne. Con una risposta di profilo valida, il terminale mostra l'avanzamento; al termine, il codice comunica in italiano quanti profili ha salvato e stampa i risultati JSON.
  10. Apri e verifica il CSV generato. Se almeno un profilo ha prodotto un risultato, trova leads.csv nella cartella corrente e aprilo come CSV UTF-8. Verifica manualmente ogni riga prima di trasferirla a un CRM o di usarla per contatti; se nessun risultato viene aggiunto, il codice non crea il file CSV.

Uso quotidiano

Prepara una lista piccola e pertinente

Aggiorna urls con soli profili per cui hai una finalità lecita e una base adeguata. Inizia con pochi URL per controllare qualità dei dati e consumo previsto dalle API.

Avvia dalla cartella corretta

Attiva l'ambiente virtuale, assicurati che .env sia accanto allo script e avvia python linkedin-scraper.py. Non usare chiavi segnaposto o chiavi di altre persone.

Leggi il terminale senza ignorare gli errori

Il programma stampa una riga di avanzamento per ciascun URL e poi un elenco JSON. Conserva eventuali messaggi di errore per capire se il problema riguarda Python, la rete, una chiave o la risposta del provider.

Controlla tutte le colonne del CSV

In leads.csv verifica name, title, company, location, email, linkedin e followers. I valori dipendono dalle risposte API e possono essere vuoti, mancanti o non adatti alla tua finalità.

Rivedi i dati prima di usarli

Non trattare il dominio costruito dal codice o un'email restituita come certezza. Verifica i dati, applica le tue procedure di privacy e inserisci i contatti nel CRM solo dopo la revisione necessaria.

Casi pratici

Preparazione controllata di contatti B2B

Una piccola azienda di servizi dispone di una lista interna di URL pubblici relativi a interlocutori potenzialmente pertinenti e vuole predisporre una revisione manuale nel proprio processo commerciale.

  1. Verifica che la raccolta e il contatto siano consentiti per la tua finalità.
  2. Inserisci una piccola selezione di URL in urls.
  3. Esegui lo script con le tue chiavi API.
  4. Apri leads.csv e controlla azienda, ruolo, email e URL prima di qualsiasi uso.
  5. Registra nel tuo processo la fonte e le informazioni necessarie per il contatto.

Ottieni un CSV locale da sottoporre a verifica umana, senza esportazione automatica verso un CRM o invio di messaggi.

Aggiornamento di una lista già autorizzata

Un team possiede già URL di profili che può trattare e vuole confrontare i campi restituiti dalle API con i propri record interni.

  1. Crea una copia di lavoro della lista degli URL autorizzati.
  2. Sostituisci l'elenco di esempio nel file Python.
  3. Avvia lo script dalla cartella con il file .env.
  4. Confronta manualmente il CSV con i record interni.
  5. Correggi o escludi dati mancanti, ambigui o non più necessari.

Ottieni un file di confronto con i campi che il codice riesce a estrarre, mantenendo la decisione finale sui dati al team.

Valutazione tecnica in ambiente di prova

Uno sviluppatore vuole comprendere il comportamento del pacchetto prima di integrarlo in una procedura interna autorizzata.

  1. Crea l'ambiente virtuale e installa requirements.txt.
  2. Leggi i metodi scrape_profile, find_email, search_company_employees e bulk_scrape.
  3. Configura chiavi di prova autorizzate e un URL che puoi usare legittimamente.
  4. Esegui una singola elaborazione e osserva terminale e CSV.
  5. Valuta separatamente privacy, limiti API e necessità di eventuali modifiche al codice.

Ottieni una comprensione pratica del formato di input, delle chiamate previste e dell'output locale dello script.

Consigli

  • Conserva una copia non modificata di linkedin-scraper.py prima di cambiare la lista urls.
  • Inizia con un solo URL autorizzato per verificare che ambiente, chiavi e formato di output siano configurati correttamente.
  • Mantieni .env privato e aggiungilo alle esclusioni del tuo sistema di versionamento se usi un repository.
  • Sostituisci l'URL di esempio consegnato: non è un elenco di contatti pronto all'uso.
  • Controlla il campo company, perché il codice usa la prima esperienza restituita per costruire il dominio stimato.
  • Ricorda che il dominio viene ottenuto convertendo il nome azienda in minuscolo, rimuovendo gli spazi e aggiungendo .com; rivedilo sempre manualmente.
  • Se leads.csv non viene creato, verifica prima se almeno un profilo ha prodotto un risultato: il file viene scritto solo in quel caso.
  • Consulta limiti, condizioni e possibili costi dei provider prima di elaborare molte righe; non dedurre costi dal pacchetto oltre alle note presenti nel README.
  • Per iniziative commerciali, documenta finalità, base giuridica, fonte del dato, informativa e modalità per gestire le richieste degli interessati.

Risoluzione dei problemi

Il terminale indica che python non è riconosciuto.

Python non è installato, non è disponibile nel PATH oppure il sistema usa un comando diverso. Installa o configura Python con la procedura standard del tuo sistema operativo, riapri il terminale e verifica la versione. Esegui poi i comandi dalla cartella estratta.

Compare un errore relativo a requests o dotenv.

Le dipendenze non sono state installate nell'interprete Python che sta eseguendo lo script. Attiva l'ambiente virtuale creato per il pacchetto e riesegui python -m pip install -r requirements.txt. Poi avvia lo script con lo stesso ambiente attivo.

La chiave sembra mancante o viene usato un valore segnaposto.

Il file .env non esiste, è nella cartella sbagliata, contiene nomi diversi oppure non ha chiavi valide. Crea manualmente .env accanto a linkedin-scraper.py e usa esattamente PROXYCURL_API_KEY e HUNTER_API_KEY. Non usare i valori predefiniti YOUR_PROXYCURL_KEY o YOUR_HUNTER_KEY.

Non appare leads.csv dopo l'esecuzione.

Il codice apre e scrive il CSV soltanto se la lista results contiene almeno un profilo. Una risposta Proxycurl non valida o non riuscita può lasciare results vuota. Controlla la lista urls, le autorizzazioni e lo stato delle tue chiavi presso i provider. Verifica inoltre di cercare il file nella cartella da cui hai lanciato il comando.

L'esecuzione si interrompe durante la ricerca email con un errore di risposta o JSON.

find_email chiama direttamente la risposta JSON di Hunter.io e non contiene una gestione esplicita di errori HTTP, rete o risposta non JSON. Controlla connessione, chiave e stato del servizio con i canali del provider. Rispetta le loro istruzioni e riprova solo quando il problema è risolto; se modifichi il codice, fallo in una copia di lavoro.

L'email o il dominio nel CSV non è affidabile per l'uso previsto.

Il codice stima il dominio dal primo campo company, elimina gli spazi e aggiunge .com. Non confronta tale stima con un dominio ufficiale e non controlla uno stato di verifica email. Non usare automaticamente quel dato. Verifica manualmente azienda, dominio e liceità dell'uso prima di inserire il record nei tuoi sistemi o contattare qualcuno.

Alcuni campi sono vuoti nel CSV.

I campi name, title, company, location, personal_emails e follower_count dipendono dalla risposta del profilo e il codice usa valori vuoti o zero quando alcuni campi non sono disponibili. Tratta i campi vuoti come dati non restituiti, non come informazioni confermate. Mantieni solo i dati necessari e completi secondo le tue procedure.

Il foglio di calcolo mostra caratteri non corretti nel CSV.

Il file viene scritto dal codice con codifica UTF-8, mentre alcune applicazioni possono aprirlo con un'altra codifica per impostazione predefinita. Importa o apri leads.csv scegliendo esplicitamente la codifica UTF-8 e verifica le colonne prima di salvare o trasformare il file.

Limiti da conoscere

  • Lo script lavora soltanto sugli URL inseriti manualmente in urls; non cerca profili e non accede a LinkedIn tramite browser.
  • Le informazioni dipendono dalle risposte di Proxycurl e Hunter.io, dalla validità delle chiavi, dalla rete e dalle condizioni dei provider.
  • Il file .env.example citato nei README non è stato consegnato nell'archivio; il file .env va creato manualmente.
  • Il CSV viene creato solo se almeno un risultato viene aggiunto e non contiene funzioni di importazione CRM o invio email.
  • La costruzione del dominio aziendale è una semplificazione tecnica e può essere errata; lo script non certifica l'email restituita.
  • I dati di profilo e di contatto possono essere dati personali. Devi rispettare termini applicabili, GDPR, informativa, base giuridica, minimizzazione, conservazione e richieste degli interessati.
  • Non usare lo script per aggirare limiti, condizioni d'uso, robot policy o misure di protezione dei servizi coinvolti.

Domande frequenti

Il file .env.example è incluso?

No. Entrambi i README lo menzionano, ma nell'archivio consegnato non è presente. Crea manualmente .env nella stessa cartella di linkedin-scraper.py con le due variabili indicate nel manuale.

Quali file del pacchetto sono in italiano e in inglese?

README.md è in italiano e README.en.md è in inglese. Il file linkedin-scraper.py contiene commenti, descrizione e messaggi del terminale in italiano; requirements.txt non contiene istruzioni linguistiche.

Posso avviare lo script senza chiavi API?

Non è utile farlo. In assenza delle variabili d'ambiente, il codice usa solo segnaposto e al normale avvio tenta comunque richieste HTTP alle API esterne.

Quali colonne contiene leads.csv?

Quando vengono prodotti risultati, le colonne sono name, title, company, location, email, linkedin e followers. Il file viene scritto in UTF-8.

Le email nel CSV sono verificate dallo script?

No. Il codice richiama l'endpoint email finder di Hunter.io e memorizza l'email restituita, oppure il primo valore personal_emails del profilo come alternativa. Non controlla un campo di verifica.

Posso cercare dipendenti di una società con questo avvio?

Il codice definisce search_company_employees con role_filter predefinito CEO, ma il blocco principale non chiama quel metodo. Per usarlo servirebbe una modifica del file Python e una verifica autonoma di termini e limiti applicabili.

Dove trovo supporto e quali sono le condizioni di licenza dichiarate?

Il README consegnato indirizza al chatbot AI di digitalhub.autos e dichiara uso personale e commerciale illimitato, con divieto di rivendita del file. Per chiarimenti aggiornati, consulta il canale indicato dal venditore.