VC LogoPortfolioBlog

Nest Web Scraper

Nest Web Scraper LogoNestJS Logo

Questo è stato il mio primo progetto in Nest.js, realizzato per imparare ad utilizzare il framework. Ho implementato un endpoint che riceve un URL da analizzare e restituisce una serie di statistiche sul contenuto della pagina web, come il numero di parole totali, gli spazi e le parole più usate.

Ho iniziato creando un progetto da zero con il boilerplate di Nest.js e osservato come funzionava l'Hello World. Successivamente, ho sviluppato un modulo per lo scraper, integrandolo nel modulo principale e aggiungendo test per verificarne il funzionamento.

Infine, ho creato un Dockerfile per eseguire l'intero progetto all'interno di un container, facilitando così la distribuzione e l'esecuzione su diverse piattaforme.

Installazione tramite Docker

Esegui questi comandi nella cartella della repo:

docker build -t nest-web-scraper .

Oppure puoi pullare la dockerimage già pronta senza nemmeno scaricare la repo:

docker pull vikappa/vincenzocostantininestwebscraper

Quindi fai partire il container:

docker run -p XXXX:3000 nest-web-scraper

(sostituisci XXXX con la porta su cui vuoi esporre il container)

A questo punto il container è pronto è dovresti poter visualizzare il container dal client DockerDesktop o digitando in console il comando:

docker ps

Installazione tramite Npm

Esegui questi comandi nella cartella della repo:

nest run build

nest start

Uso dell'applicazione

A questo punto dovresti poter inviare una richiesta POST all'endpoint /scrape con un body come questo:

{ "urlToScrape": "https://it.wikipedia.org/wiki/Cyberpunk_2077" }

Attenzione! Per favore, non usare URL di siti come YouTube o Facebook perchè contengono sistemi anti scraping che mandano in errore il sistema.

Front end user-ready

Per usare l'applicazione senza dover installare Docker o Node.js, ho creato un front-end user-ready. Questo front-end è stato sviluppato utilizzando React e TypeScript. L'applicazione back end è stata hostata su Koyeb, mentre il front-end è stato distribuito su Vercel.

EsperienzeIstruzioneContatti