volete aiutarci? Ecco le opzioni disponibili:","Crunchbase","Chi siamo","Grazie a tutti per l'incredibile supporto!","Collegamenti rapidi","Programma di affiliazione","Premio","ProxyScrape prova premium","Controllore di proxy online","Tipi di proxy","Paesi proxy","Casi d'uso del proxy","Importante","Informativa sui cookie","Esclusione di responsabilità","Informativa sulla privacy","Termini e condizioni","Media sociali","Facebook","LinkedIn","Twitter","Quora","Telegramma","Discordia","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgio | IVA BE 0749 716 760\n","Scraping di indirizzi email con Python - Guida definitiva %year%"]}
Possedere un elenco di potenziali clienti via e-mail può aiutare i marketer a scalare le loro attività. Grazie allo scraping degli indirizzi e-mail tramite script Python, gli imprenditori possono raggiungere meglio il proprio pubblico. MailButler.io afferma che ci sono quasi 4,3 miliardi di utenti di posta elettronica a livello globale, che si stima raggiungeranno i 4,6 miliardi entro il 2025. Queste statistiche dicono che le persone
Possedere un elenco di potenziali clienti via e-mail può aiutare i marketer a scalare le loro attività. Grazie allo scraping degli indirizzi e-mail con gli script Python, gli imprenditori possono raggiungere meglio il loro pubblico.
MailButler.io afferma che ci sono quasi 4,3 miliardi di utenti di e-mail a livello globale, che si stima raggiungeranno i 4,6 miliardi entro il 2025. Queste statistiche dicono che le persone si affidano principalmente alla piattaforma di posta elettronica per la loro modalità di comunicazione ufficiale. Questo articolo vi guiderà attraverso il processo di scraping degli indirizzi e-mail utilizzando il linguaggio python.
Uno dei modi più semplici per avere una buona clientela è quello di avere il maggior numero possibile di indirizzi e-mail aziendali e di inviare loro di volta in volta i dettagli del vostro servizio. Su Internet sono presenti molti strumenti di scraping che forniscono questi servizi gratuitamente, ma hanno limiti di prelievo dei dati. Offrono anche limiti di estrazione dei dati illimitati, ma sono a pagamento. Perché pagarli quando potete costruirne uno con le vostre mani? Vediamo i passaggi per costruire uno strumento di scraping di qualità utilizzando Python.
Articoli correlati
I migliori strumenti di scraping web in Python
Come creare un proxy in Python
Anche se si tratta di un esempio molto semplice per i principianti, sarà un'esperienza di apprendimento, soprattutto per coloro che sono alle prime armi con il web scraping. Questo sarà un tutorial passo dopo passo che vi aiuterà a ottenere indirizzi e-mail senza alcun limite. Iniziamo con il processo di costruzione del nostro web scraper intelligente.
Per il nostro progetto utilizzeremo i seguenti sei moduli.
importare re
importare richieste
da urllib.parse import urlsplit
da collections import deque
da bs4 import BeautifulSoup
importare pandas come pd
da google.colab importare file
Di seguito sono riportati i dettagli dei moduli importati:
re è per la corrispondenza con le espressioni regolari.requests per l'invio di richieste HTTP.urlsplit per dividere gli URL in parti componenti.deque è un contenitore che ha la forma di un elenco usato per l'aggiunta e il prelievo da entrambe le estremità.BeautifulSoup per estrarre i dati dai file HTML di diverse pagine web.pandas per la formattazione delle e-mail in DataFrame e per ulteriori operazioni.
In questa fase, inizializzeremo un deque che salverà gli URL raschiati, gli URL non raschiati e una serie di e-mail di salvataggio raschiate con successo dai siti web.
# leggere l'url dall'input
original_url = input("Inserisci l'url del sito web: ")
# per salvare gli url da scrapare
unscraped = deque([original_url])
# per salvare gli url scrapati
scraped = set()
# per salvare le email recuperate
emails = set()
Gli elementi duplicati non sono ammessi in un insieme, quindi sono tutti unici.
Il primo passo consiste nel distinguere tra gli URL scraped e quelli non scraped. Il modo per farlo è spostare un URL da unscraped a scraped.
while len(unscraped):
# sposta unsraped_url nel setscraped_urls
url = unscraped.popleft() # popleft(): Rimuove e restituisce un elemento dal lato sinistro della deque
scraped.add(url)
Il passo successivo consiste nell'estrarre i dati da diverse parti dell'URL. A tale scopo, utilizzeremo urlsplit.
parti = urlsplit(url)
urlsplit() restituisce una 5-tupla: (schema di indirizzamento, posizione in rete, percorso, query, frammento, identificatore).
Non posso mostrare esempi di input e output per urlsplit() per motivi di riservatezza, ma una volta provato, il codice chiederà di inserire un valore (indirizzo del sito web). L'output mostrerà SplitResult() e all'interno di SplitResult() ci saranno cinque attributi.
Questo ci permetterà di ottenere la base e il percorso dell'URL del sito web.
base_url = "{0.scheme}://{0.netloc}".format(parts)
if '/' in parts.path:
path = url[:url.rfind('/')+1]
else:
path = url
È il momento di inviare la richiesta HTTP GET al sito web.
try:
response = requests.get(url)
except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
# ignora le pagine con errori e continua con l' url successivo
continuare
Per estrarre gli indirizzi e-mail utilizzeremo l'espressione regolare e li aggiungeremo al set di e-mail.
# È possibile modificare l'espressione regolare in base alle proprie esigenze.
new_emails = s et(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com",
response.text, re.I)) # re.I: (ignora il caso)
emails.update(new_emails)
Le espressioni regolari sono di grande aiuto quando si vogliono estrarre informazioni di propria scelta. Se non siete pratici di queste espressioni, potete dare un'occhiata a Python RegEx per maggiori dettagli.
Il passo successivo consiste nel trovare tutti gli URL collegati al sito web.
# crea una bella zuppa per il documento html
soup = BeautifulSoup(response.text, 'lxml')
The <a href=””> tag indicates a hyperlink that can be used to find all the linked URLs in the document.
per ancora in soup.find_all("a"):
# estrae l'url collegato dall'ancora
se "href" in anchor.attrs:
link = anchor.attrs["href"]
else:
link = ''
# risolvere i link relativi (che iniziano con /)
if link.startswith('/'):
link = base_url + link
elif not link.startswith('http'):
link = percorso + link
Quindi troveremo i nuovi URL e li aggiungeremo alla coda degli unscraped se non sono presenti né negli scraped né negli unscraped.
Provando il codice da soli, si noterà che non tutti i link sono in grado di essere raschiati, quindi è necessario escluderli,
se non link.endswith(".gz" ):
se non link in unscraped e non link in scraped:
unscraped.append(link)
Per analizzare meglio i risultati, esporteremo le e-mail in un file CSV.
df = pd.DataFrame(emails, columns=["Email"]) # sostituire con il nome della colonna che si preferisce
df.to_csv('email.csv', index=False)
Se si utilizza Google Colab, è possibile scaricare il file sul computer locale tramite
da google.colab import file
files.download("email.csv")
Come già spiegato, non posso mostrare gli indirizzi e-mail scartati per questioni di riservatezza.
[Disclaimer! Alcuni siti web non permettono di fare web scraping e hanno bot molto intelligenti che possono bloccare permanentemente il vostro IP, quindi fate scraping a vostro rischio e pericolo].
import re
import requests
from urllib.parse import urlsplit
from collections import deque
from bs4 import BeautifulSoup
import pandas as pd
from google.colab import files
# read url from input
original_url = input("Enter the website url: ")
# to save urls to be scraped
unscraped = deque([original_url])
# to save scraped urls
scraped = set()
# to save fetched emails
emails = set()
while len(unscraped):
url = unscraped.popleft()
scraped.add(url)
parts = urlsplit(url)
base_url = "{0.scheme}://{0.netloc}".format(parts)
if '/' in parts.path:
path = url[:url.rfind('/')+1]
else:
path = url
print("Crawling URL %s" % url)
try:
response = requests.get(url)
except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
continue
new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com", response.text, re.I))
emails.update(new_emails)
soup = BeautifulSoup(response.text, 'lxml')
for anchor in soup.find_all("a"):
if "href" in anchor.attrs:
link = anchor.attrs["href"]
else:
link = ''
if link.startswith('/'):
link = base_url + link
elif not link.startswith('http'):
link = path + link
Poiché le aziende hanno bisogno di numerosi indirizzi e-mail per costruire la loro lista di contatti, è necessario raccogliere i dati da più fonti. Il processo di raccolta manuale dei dati può essere noioso e richiede molto tempo. In questo caso, gli scrapers di solito scelgono i proxy per accelerare il processo e aggirare le restrizioni che si presentano. Proxyscrape fornisce proxy ad alta larghezza di banda che sono in grado di scrapare dati illimitati e funzionano 24 ore su 24, 7 giorni su 7, per garantire una funzionalità ininterrotta. Il livello di anonimato del proxy è sufficientemente alto da nascondere l'identità degli scrapers.
1. Perché è necessario raccogliere gli indirizzi e-mail?
La creazione di una lista di contatti potenziali con indirizzi e-mail qualificati faciliterà il processo di raggiungimento del pubblico target. Poiché la maggior parte delle persone utilizza l'e-mail come mezzo di comunicazione, è più facile raggiungerle attraverso gli indirizzi e-mail.
2. Abbiamo bisogno di proxy per lo scraping degli indirizzi e-mail?
Durante lo scraping degli indirizzi e-mail da più fonti, gli scrapers possono trovarsi di fronte ad alcune sfide come i blocchi IP o le barriere geografiche. In questo caso, i proxy nascondono gli indirizzi degli utenti con l'indirizzo proxy e rimuovono i blocchi nell'accesso ai siti web bloccati.
3. È legale raccogliere gli indirizzi e-mail?
È sempre legale raccogliere dati disponibili al pubblico. Pertanto, gli scrapers devono assicurarsi che i dati che stanno raccogliendo siano disponibili nel pubblico dominio. In caso contrario, possono raccogliere i dati previa autorizzazione per mantenere la legalità dello scraping.
In questo articolo abbiamo esplorato un'altra meraviglia del web scraping mostrando un esempio pratico di scraping di indirizzi e-mail. Abbiamo tentato l'approccio più intelligente realizzando il nostro web crawler con Python, la libreria più semplice e allo stesso tempo più potente, chiamata BeautfulSoup. Il web scraping può essere di grande aiuto se fatto nel modo giusto, considerando le vostre esigenze. Anche se abbiamo scritto un codice molto semplice per lo scraping degli indirizzi e-mail, è totalmente gratuito e non è necessario affidarsi ad altri servizi. Ho fatto del mio meglio per semplificare il codice il più possibile e ho anche aggiunto spazio per la personalizzazione, in modo che possiate ottimizzarlo in base alle vostre esigenze.
Se siete alla ricerca di servizi proxy da utilizzare durante i vostri progetti di scraping, non dimenticate di dare un'occhiata a ProxyScrape residential e premium proxies.