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')