Per prima cosa bisogna importare i pacchetti che ci serviranno durante il progetto, nel caso queste non siano già state installate occorre scaricarle con il comando pip install pkg_name
import requests
import pandas as pd
from bs4 import BeautifulSoup
Per seconda cosa chiamiamo lavori il nome della mansione che dobbiamo cercare, zone la città o il luogo dove dobbiamo cercare le mail ed infine creiamo una lista che chiamiamo database_scar per poi inserire all'interno le mail della società e le informazioni.
lavori = 'carrozzeria'
zone = 'milano'
database_scar = []
Infine facciamo la parte di ricerca delle mail che consiste nel ricercare per ogni pagina relativamente
alla ricerca della mansione e della zona tutti coloro i quali si sono registrati inserendo il sito web per
poi andare ad ricercare all'interno del sito web la mail ricercando all'interno dei link inseriti
all'interno del sito il mailto
.
In tutto questo utilizziamo molte volte il try
per evitare gli errori 404, 403 e anche
eventuali errori di blocco da parte del sito per i troppi accessi.
for i in range(1, 2000):
url = "https://www.paginegialle.it/ricerca/" + lavori.replace(" ","%20") + "/" + zone.replace(" ","%20")+"/p-"+str(i)
try:
response = requests.get(url)
except:
response = "<Response [403]>"
if str(response) == "<Response [200]>":
soup = BeautifulSoup(response.text, "html.parser")
all_links = [a['href'] for a in soup.find_all('a', class_="btn btn-black icn-sitoWeb shinystat_ssxl")]
for company_link in all_links:
try:
response = requests.get(company_link)
except:
response = "<Response [403]>"
if str(response) == "<Response [200]>":
soup = BeautifulSoup(response.text, "html.parser")
try:
mail = str([a['href'][7:].lower() for a in soup.find_all('a') if a['href'][:7].lower()=='mailto:'][-1])
if len(mail) > 5:
database_scar.append([company_link, mail, lavori, zone])
except:
pass
Salviamo i dati in formato csv:
df = pd.DataFrame(database_scar, columns=["Sito-web","Email","Tipo di struttura","Luogo"])
df.to_csv('mail_scaricate.csv')