Crawlee for Python: costruisci una pipeline di crawling con robots.txt, link graph ed export RAG
Crawlee for Python è un framework per costruire pipeline di web scraping e crawling. In questo tutorial si parte dall’installazione dell’ambiente (con Pydantic 2.11, Playwright per il rendering JavaScript, e le dipendenze di base), passando per la generazione di un sito demo locale, fino all’estrazione strutturata dei dati e all’esportazione in formato adatto a sistemi RAG.
Il setup gestisce anche la persistenza delle directory di storage e l’esecuzione in ambienti come Colab. Dopo l’installazione, il runtime viene riconfigurato automaticamente (con restart incluso).
Il sito demo: prodotti, blog, documentazione
Viene generato un sito fittizio con pagine prodotto (5 SKU con nome, prezzo, categoria, valutazione, stock, feature e prodotti correlati), pagine di documentazione con sezioni tecniche, blog post con tag, e un catalogo generato lato client con JavaScript. Il tutto include un file robots.txt che blocca alcune sezioni, dati strutturati JSON-LD e metadati HTML.
Tre crawler per tre casi d’uso
Il tutorial esplora tre modalità di crawling:
- BeautifulSoupCrawler – crawling ricorsivo veloce su HTML statico. Estrae titoli, metadati, anteprime di testo, link uscenti, attributi prodotto, heading della documentazione, blocchi di codice e tag dei blog.
- ParselCrawler – estrazione precisa con selettori CSS e XPath sulle pagine dettaglio prodotto.
- PlaywrightCrawler – rendering di contenuti JavaScript in un browser Chromium headless, attesa degli elementi DOM dinamici, estrazione dati client-side e cattura di screenshot a schermo intero.
Dai dati grezzi al grafo delle relazioni
I link raccolti vengono usati per costruire un grafo orientato del sito (con NetworkX), visualizzando le connessioni tra pagine prodotto, documentazione e blog. I dati strutturati (prezzi, rating, feature) vengono aggregati in un dataframe per analisi successive.
Il tutorial mostra anche come esportare i chunk di testo pulito (con metadata) in formato JSONL, pronto per essere indicizzato da un motore vettoriale o usato in una pipeline RAG.
