WEB SCRAPING


PRENDERE EMAIL DALLE PAGINE GIALLE

Premessa:

Succede abbastanza spesso che in un azienda sarebbe utile poter avere le mail relative a tutti i possibili clienti per poter inviare pubblicità o promozione. Avere questo tipo di informazioni risulta molto spesso piuttosto complicato, per questo ho deciso di spiegare in questo articolo come fare ad avere questo genere di informazioni.
In questo articolo ci concentreremo a vedere la procedure con due linguaggi di programmazione (R e Python) molto comodi per le procedure di Web Scraping soprattutto per la loro facilità di strutturare procedure di text mining.

Cos'è il Web Scraping?

Prima di andare ad analizzare il codice descrivendolo occorre capire cosa sia il web scraping. Il Web scraping (chiamato anche web harvesting, o web data extraction) è un insieme di tecniche utilizzate per l'estrazione di dati dai siti Web. È una forma di copia, in cui i dati specifici vengono raccolti e copiati accedendo al World Wide Web direttamente utilizzando il protocollo Hypertext Transfer Protocol o tramite un browser Web. In genere il termine si riferisce a processi automatizzati implementati utilizzando un web crawler, un bot o un server per il successivo recupero o analisi in un database locale centrale o foglio di calcolo.
Tra le tante possibili soluzioni si è deciso di utilizzare la tecnica di Web Scraping chiamata HTML Parsing ossia una deserializzazione delle pagine HTML. Questo processo riceve il codice HTML non elaborato, lo interpreta e genera dal codice una struttura ad albero DOM (Document Object Model).
Questa tecnica è molto versatile in quanto gran parte dei siti Web hanno grandi raccolte di pagine generate dinamicamente da un'origine strutturata sottostante come un database. I dati della stessa categoria sono in genere codificati in pagine simili da uno script o un modello comune. Nel data mining, un programma che rileva tali modelli in una particolare fonte di informazioni, ne estrae il contenuto e lo traduce in un modulo relazionale, viene chiamato wrapper. Gli algoritmi di generazione dei wrapper presuppongono che le pagine di input di un sistema di induzione di wrapper siano conformi a un modello comune e che possano essere facilmente identificate in termini di schema comune URL.

Che paroloni, cos'è e in cosa consiste in definitiva il web scraping?
Il web scraping è una tecnica con cui si prendono le informazioni da internet. In particolare la tecnica chiamata HTML Parsing consiste nel capire la struttura del sito e della pagina web e trovare il modo di prendere le informazioni in modo automatico da tutte le pagine.

Obbiettivo del progetto:

L'obbiettivo di questo progetto consiste nel cercare di prendere le mail dalle pagine gialle che sono la fonte italiana dove le aziende solitamente si iscrivono per farsi trovare dai clienti.

Ma sulle Pagine Gialle non ci sono le mail...

In effetti è vero, sulle pagine gialle non ci sono le mail, infatti il nostro obbiettivo iniziale deve essere quello di prendere, per le aziende che hanno messo il sito web sulle pagine gialle, l'indirizzo web; per poi andare a cercare all'interno del loro sito la mail della società.


Andiamo a vedere in pratica come fare (back end):


Spiegazione e codice in R

Codice in R

Spiegazione e codice in Python

Codice in Python



Come si può abbellire il tutto? (front end)

Non vuoi che il tuo script risulti un freddo codice da far partire dal terminale e vuoi che sia un po' più bello? Premetto che non sono molto bravo nella parte front end, soprattutto per il mio pessimo gusto estetico ma anche per la mia poca esperienza in questo ambito. Comunque quando bisogna pensare a strutturare la parte front end di script in R o Python sono solito strutturare un parte front end che, semplicemente, aiuta, tramite una form grafica, ad eseguire il codice sul terminale.
In questo caso ho deciso utilizzare VB.NET in quanto lo conosco abbastanza bene perchè è uno dei primi linguaggi che ho imparato ed ero più comodo nell'utilizzarlo (detto questo persone più competenti di me avrebbero magari scelto un altro linguaggio o lo stesso ma lo avrebbero fatto meglio).

Programma si apre con una form costruita come segue:



Ci sono due opzioni: cercare in una regione o citta specifica



... oppure cercare in tutta italia



Ed infine una volta scaricati tutti i dati esce fuori il comando per scaricare il csv: