Vai al contenuto principale

Firecrawl: crawler web AI creato per applicazioni LLM

Scopri come Firecrawl semplifica l’estrazione dei dati dal web con strumenti di crawling, scraping e mappatura basati su AI. Impara a usarlo con Python e agent AI per alimentare workflow moderni.
· 8 min leggi

Scopri con l'IA

Firecrawl è un nuovo tipo di crawler web ottimizzato per i flussi di lavoro di AI. Consente agli sviluppatori di fare scraping di pagine, siti web o persino dell’intero web. È ideale per ridurre la complessità dello scraping tradizionale grazie a funzionalità come il supporto JavaScript, la conversione automatica in markdown e l’integrazione con i framework LLM più diffusi.

In questo articolo non solo descriverò le principali funzionalità di Firecrawl, ma condividerò anche alcuni suggerimenti avanzati pratici, integrazioni nell’ecosistema e alcune applicazioni reali, così potrai iniziare subito a fare pratica.

Che cos’è Firecrawl?

Firecrawl è un crawler web basato su AI sviluppato da Mendable.ai. È un servizio API che esplora i siti e li converte in dati puliti e pronti per LLM come markdown, JSON, ecc.

È un approccio guidato dall’AI che comprende il contesto della pagina ed estrae in modo intelligibile il contenuto principale, a differenza degli scraper tradizionali come BeautifulSoup o Puppeteer, che esplorano il web alla cieca e spesso restituiscono dati sporchi. È in grado di trasformare interi siti in markdown pulito o dati strutturati, ed è ideale per i compiti LLM.

Firecrawl ha 3 modalità principali, che tratterò tra poco nel dettaglio. In genere userai la modalità scrape per una singola URL, la modalità crawl per un intero sito e la modalità map per scoprire URL.

Funzionalità principali di Firecrawl

Ciò che distingue Firecrawl è che non richiede una sitemap grazie a un meccanismo di navigazione intelligente, gestisce JavaScript pesante e contenuti dinamici, l’output può essere markdown pulito, HTML, JSON, screenshot e altro ancora, risultando molto flessibile; include proxy integrato, meccanismi anti-bot e caching; gestisce l’elaborazione in batch ed è concorrente per lavori su larga scala; è estremamente personalizzabile perché puoi escludere tag, eseguire il crawl con header personalizzati, impostare la profondità del crawl e altro; si integra bene con framework LLM come LangChain, LlamaIndex e CrewAI; ed è naturalmente adatto alle aziende poiché puoi impostare rate limit, controlli di concorrenza e requisiti di affidabilità.

Come configurare Firecrawl

La parte bella di Firecrawl è che puoi metterlo in funzione molto rapidamente. Ecco i passaggi principali per installarlo nel tuo sistema:

Configurazione della chiave API

  1. Registrati su firecrawl.dev per ottenere una chiave API.
  2. Installa la libreria client Python:
pip install firecrawl

E se usi langchain, usa

pip install firecrawl-py
  1. Archivia in modo sicuro la chiave API usando variabili d’ambiente:
import os
from firecrawl import FirecrawlApp

# Set your Firecrawl API key as an environment variable for security
api_key = os.getenv('FIRECRAWL_API_KEY')
# Create an instance of the FirecrawlApp class with your API key 
app = FirecrawlApp(api_key=api_key)

Esempio di scraping di base

Puoi semplicemente eseguire il tuo primo scraping usando il metodo .scrape_url():

response = app.scrape_url(url=example.com', formats=['markdown'])
print(response)

Questo codice recupera il contenuto principale della pagina firecrawl.dev come markdown.

Comprendere le modalità e gli endpoint di Firecrawl

Firecrawl ha tre modalità principali che definiscono l’ampiezza dello scraping. In questa sezione ti guiderò attraverso ciascuna di esse.

Scrape mode

La modalità scrape prende di mira URL individuali. È ideale per estrarre dettagli di prodotti o articoli di news. Il parametro llm_extract abilita l’estrazione basata su schema. Quello che devi fare è definire lo schema con cui vuoi che il tuo JSON finale abbia l’aspetto desiderato, inizializzare la configurazione e avviare lo scraping:

from firecrawl import JsonConfig
from pydantic import BaseModel

# Define the expected data structure for the JSON extraction schema
class ExtractSchema(BaseModel):
    company_mission: str
    supports_sso: bool
    is_open_source: bool
    is_in_yc: bool

# Define the JSON configuration and set it to llm extraction mode
json_config = JsonConfig(
    extractionSchema=ExtractSchema.model_json_schema(),
    mode="llm-extraction",
    pageOptions={"onlyMainContent": True}
)

# Scrape the URL, extract data, and format it into JSON
llm_extraction_result = app.scrape_url(
    'https://firecrawl.dev',
    formats=["json"],
    json_options=json_config
)
print(llm_extraction_result)

Ecco un altro tipo di scraping su singola URL, ma questa volta con estrazione basata su selettori:

# Get a screenshot of the top of the overview page
scrape_result = app.scrape_url('firecrawl.dev', 
    formats=['markdown', 'html', "screenshot"], 
    actions=[
        {"type": "wait", "milliseconds": 3000},
        {"type": "click", "selector": "h1"},
        {"type": "wait", "milliseconds": 3000},
        {"type": "scrape"},
        {"type": "screenshot"}
    ],
)
print(scrape_result)

Questo script apre prima il sito, poi attende 3000 millisecondi, fa clic sul primo selettore h1, attende di nuovo e quindi esegue lo scraping e salva uno screenshot della pagina corrente. Se ricevi errori di timeout, prova ad aumentare i tempi di attesa insieme al parametro di timeout.

Crawl mode

La modalità crawl ti consente di esplorare un intero sito, incluse tutte le sottopagine accessibili, senza richiedere una sitemap. Restituisce un ID job per monitorare l’avanzamento e supporta il recupero di metadati quando vuoi ottenere informazioni extra come header e timestamp, il controllo del rate per regolare la velocità di accesso al sito e impostazioni di profondità ricorsiva per decidere quanti livelli di link seguire. I passaggi di un crawler sono i seguenti:

  1. Per prima cosa il crawler apre l’URL indicato
  2. Esegue lo scraping
  3. Tutti gli hyperlink verso sottopagine vengono analizzati e assegnati a crawler separati
  4. I passaggi si ripetono fino al raggiungimento di un massimo definito.

Ecco un esempio di crawler che usa le richieste Python:

import requests

url = "https://api.firecrawl.dev/v1/crawl" 
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}
data = {
    "url": "https://docs.firecrawl.dev", 	# site to crawl
    "limit": 100, 		# max items
    "scrapeOptions": {
        "formats": ["markdown", "html"]  	# output formats
    }
}

response = requests.post(url, headers=headers, json=data)

print(response.status_code)
print(response.json())

Questo codice indica a Firecrawl di recuperare fino a 100 pagine da https://docs.firecrawl.dev, restituire ogni pagina sia in Markdown che in HTML e quindi stampare il risultato.

Se vuoi saperne di più sulle API, dai un’occhiata al nostro corso Introduction to APIs in Python, al code-along Working with APIs in Python e al tutorial Mastering Python APIs: A Comprehensive Guide to Building and Using APIs in Python.

Map mode

Map ti permette di inserire un sito web e recuperare all’istante tutte le URL del sito in modo estremamente rapido. Ecco perché abbiamo creato /map: trasforma una singola URL in una sitemap completa, risultando ideale quando vuoi chiedere agli utenti finali di selezionare i link da cui fare scraping, scoprire velocemente tutte le URL del sito, concentrarti sulle pagine relative a un argomento specifico usando il parametro di ricerca o limitare il crawl a determinate pagine.

Una considerazione: poiché questo endpoint privilegia la velocità, potrebbe non catturare ogni link.

# Map a website:
map_result = app.map_url('https://firecrawl.dev')
print(map_result)

Questo codice indica a Firecrawl di scoprire tutti i link presenti nella pagina https://firecrawl.dev ed elencarteli.

Applicazioni reali di Firecrawl

Firecrawl è uno strumento versatile per una varietà di attività, come abbiamo visto in precedenza, il che lo rende estremamente utile in scenari reali. È molto adatto per effettuare scraping di bacheche di lavoro o siti di notizie per compilare elenchi o articoli aggiornati da analizzare, o per addestrare il tuo modello di machine learning per le previsioni. Puoi anche eseguire analisi del sentiment tramite recensioni acquisite, ad esempio raccogliendo recensioni dei clienti da e‑commerce o siti come Amazon, per analizzare il sentiment e supportare decisioni di business.

Questo può essere ulteriormente potenziato con il monitoraggio dei prezzi, ad esempio tracciando i prezzi dei prodotti su più piattaforme per identificare trend o generare avvisi per ribassi. Inoltre, puoi usare Firecrawl per estrarre documentazione tecnica per addestrare o alimentare gli agent AI, migliorandone la base di conoscenza, oppure per l’ingestione di dati in pipeline AI multi‑agent, come fa CAMEL‑AI.

Può anche fornire dati web strutturati a sistemi di retrieval-augmented generation (RAG) per migliorare le prestazioni del modello e ridurne i livelli di allucinazione

Tecniche avanzate e best practice

Per massimizzare il potenziale di Firecrawl, ecco alcune tecniche avanzate e best practice:

  • Estrai dati strutturati per il tuo LLM usando l’endpoint /extract per restituire dati strutturati basati su un prompt o uno schema, poiché gli LLM gestiscono meglio questo tipo di dati rispetto all’HTML grezzo.

  • Gestisci gli errori con retry implementando una logica di retry con backoff esponenziale per gestire errori API transitori.

  • Ottimizza le prestazioni usando il crawling asincrono di Firecrawl per avviare crawl di grandi dimensioni senza bloccare la tua applicazione. È ideale per web app o servizi.

  • Filtra i crawl con parametri come max_depth o exclude per limitare l’esplorazione a specifici sottodomini o tipi di pagina. Questo aiuta a ridurre i dati non necessari secondo le esigenze.

  • Usa strumenti Python per validare e ripulire i dati acquisiti, ad esempio bilanciandoli, eliminando i valori nulli e molto altro. pandas, numpy, seaborn e altri strumenti sono molto utili in questi compiti. Se vuoi saperne di più sul data cleaning, valuta il nostro corso Cleaning Data in Python.

Firecrawl vs. strumenti di scraping tradizionali

Firecrawl ha numerosi vantaggi che lo rendono una delle scelte migliori nella maggior parte dei casi e lo fanno emergere rispetto agli strumenti tradizionali come Scrapy, BeautifulSoup e Puppeteer. Gestisce senza sforzo i contenuti renderizzati via JavaScript, mentre strumenti come BeautifulSoup richiedono strumenti aggiuntivi come Selenium e talvolta ispezioni manuali. Dispone di rotazione dei proxy integrata e gestisce i rate limit per ridurre il tempo di setup rispetto alle configurazioni manuali di Scrapy, che richiedono molto tempo. Inoltre, le capacità di estrazione basate su LLM di Firecrawl forniscono dati strutturati, una funzionalità assente nella maggior parte degli strumenti tradizionali.

Tuttavia, gli strumenti tradizionali possono essere preferibili in casi specifici, ad esempio quando desideri un’esecuzione locale: strumenti come BeautifulSoup possono essere eseguiti localmente senza dipendenze da API, un aspetto interessante per chi evita servizi cloud. La facilità ed efficienza di implementazione a volte hanno il costo di una personalizzazione estrema: per esempio Scrapy offre un controllo estremamente granulare per pipeline di scraping altamente personalizzabili.

Integrazioni e supporto dell’ecosistema

Firecrawl si integra bene con molti dei framework LLM più comuni, con un solido supporto dell’ecosistema, migliorandone l’utilità nei flussi di lavoro AI. Puoi integrarlo con LangChain usando il modulo FirecrawlLoader, che abilita un’integrazione semplice dei dati web nelle pipeline di LangChain. Oppure puoi usarlo con LlamaIndex, dato che FirecrawlReader supporta il caricamento di dati web per indicizzazione e interrogazione. Firecrawl è anche uno strumento integrato per l’esplorazione di siti all’interno del framework di CrewAI e supporta molti altri framework come Flowise, Dify e CAMEL‑AI con ampia compatibilità.

Piani tariffari e limiti di utilizzo

Firecrawl offre una gamma di piani tariffari a seconda del caso d’uso per soddisfare diverse esigenze. Assicurati di fare riferimento alla pagina prezzi ufficiale di Firecrawl, nel caso cambiasse qualcosa.

  • Free tier: include un numero limitato di crediti ed è adatto per test e progetti piccoli.
  • Hobby tier: offre più crediti per singoli o piccoli team a basso costo.
  • Standard, Growth, Enterprise tiers: fornisce crediti crescenti, limiti di velocità più elevati e funzionalità avanzate come richieste per minuto (RPM) personalizzate.

Il sistema di crediti funziona come segue:

Piano

Crediti

Funzionalità

Ideale per

Free

Limitati

Scraping di base, test

Principianti, progetti piccoli

Hobby

Moderati

Più crediti, funzionalità standard

Sviluppatori individuali

Standards

Alti

Limiti più elevati, funzionalità avanzate

Team in crescita

Growth

Molto alti

Scalabile, opzioni personalizzate

Progetti di grandi dimensioni

Enterprise

Illimitati

RPM personalizzato, supporto dedicato

Alti volumi, uso enterprise

Conclusione

Firecrawl cambia le regole del gioco per l’estrazione di dati dal web, in particolare per le applicazioni AI. Convertendo i siti in dati puliti, strutturati e pronti per gli LLM, aiuta gli sviluppatori a costruire soluzioni più intelligenti. La sua facilità d’uso, la ricchezza di funzionalità e le integrazioni estese lo rendono una scelta di primo piano per attività che vanno dal monitoraggio dei prezzi ai workflow RAG.

Ti incoraggio a esplorare il piano gratuito di Firecrawl per testarne le capacità. Resta in contatto con la community su GitHub e Discord di Firecrawl per aggiornamenti, suggerimenti e supporto.

Con Firecrawl, i dati web non sono più una sfida. Diventano una potente risorsa per le tue innovazioni AI.

Come prossimo passo, ti consiglio il seguente corso e code‑along:

Iheb Gafsi

Autore

Iheb Gafsi

Lavoro su sistemi di IA accelerata che abilitano l'intelligenza all'edge con pipeline di ML federate su dati decentralizzati e carichi di lavoro distribuiti.  Il mio lavoro si concentra su Large Models, Elaborazione del Parlato, Computer Vision, Reinforcement Learning e topologie ML avanzate.

FAQ

Perché ricevo un errore di timeout?

Per prima cosa verifica di usare correttamente la tua chiave API, poi fai debug per capire se il sito individua correttamente le parti che stai cercando di acquisire.

Firecrawl usa solo la ricerca alimentata da AI?

No, puoi usare diversi tipi di ricerca, come quella basata su selettori e quella basata su LLM.

Firecrawl può gestire siti con contenuti JavaScript pesanti?

Sì, Firecrawl è ottimizzato anche per siti web dinamici.

Quando potrei scegliere uno strumento tradizionale come BeautifulSoup invece di FireCrawl?

BeautifulSoup è locale, gratuito e gestisce lo scraping HTML semplice.

Posso provare Firecrawl gratuitamente?

Sì, come tester hai un numero limitato di richieste per minuto.

Argomenti

Correlato