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
- 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.
- 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.
- Entra nella cartella estratta. Sostituisci il percorso segnaposto con la cartella in cui hai estratto il pacchetto.
- 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.
- Installa le dipendenze consegnate. Con l'ambiente virtuale attivo, installa esattamente le dipendenze elencate in requirements.txt.
- 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.
- 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.
- 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.
- 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.
- 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.
- Verifica che la raccolta e il contatto siano consentiti per la tua finalità.
- Inserisci una piccola selezione di URL in urls.
- Esegui lo script con le tue chiavi API.
- Apri leads.csv e controlla azienda, ruolo, email e URL prima di qualsiasi uso.
- 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.
- Crea una copia di lavoro della lista degli URL autorizzati.
- Sostituisci l'elenco di esempio nel file Python.
- Avvia lo script dalla cartella con il file .env.
- Confronta manualmente il CSV con i record interni.
- 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.
- Crea l'ambiente virtuale e installa requirements.txt.
- Leggi i metodi scrape_profile, find_email, search_company_employees e bulk_scrape.
- Configura chiavi di prova autorizzate e un URL che puoi usare legittimamente.
- Esegui una singola elaborazione e osserva terminale e CSV.
- 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.