
Ottieni dati web per agenti AI e LLM
Il web crawler e scraper più veloce per Rust.
Spider è un motore di crawling progettato per la concorrenza, scritto in Rust. Trasmette le pagine nel momento in cui arrivano, esegue il rendering di JavaScript solo quando una pagina lo richiede e scala da un singolo script a una flotta distribuita senza modificare il tuo codice. Lo stesso motore alimenta Spider Cloud, così puoi creare prototipi in locale e passare a un'infrastruttura gestita con un solo cambio di configurazione.
La parte più difficile del crawling su larga scala non è il codice. Sono i proxy, i browser headless e la costante evoluzione delle difese anti-bot. Spider Cloud gestisce tutto questo per te dietro la stessa API.
Ottieni una chiave API gratuita → (nessuna carta richiesta)
[dependencies]
spider = { version = "2", features = ["spider_cloud"] }
use spider::configuration::{SpiderCloudConfig, SpiderCloudMode};
use spider::website::Website;
let cloud = SpiderCloudConfig::new("sk-...")
.with_mode(SpiderCloudMode::Smart); // proxy by default, auto-unblock when blocked
let mut website = Website::new("https://example.com")
.with_spider_cloud_config(cloud)
.build()?;
La modalità Smart instrada prima attraverso i proxy e passa all'unblocker solo sulle pagine che oppongono resistenza, così paghi per il bypass esattamente quando serve e mai quando non serve.
Nessuna chiave, nessun servizio. Solo il crawler.
[dependencies]
spider = "2"
use spider::{tokio, website::Website};
#[tokio::main]
async fn main() {
let mut website = Website::new("https://example.com");
let mut rx = website.subscribe(16);
tokio::spawn(async move {
while let Ok(page) = rx.recv().await {
println!("{} {}", page.status_code, page.get_url());
}
});
website.crawl().await;
website.unsubscribe();
}
Le pagine vengono trasmesse non appena vengono recuperate. Il crawler scopre i collegamenti, rispetta i confini e si ferma da solo.
Spider adotta un approccio HTTP-first e avvia Chrome headless solo quando una pagina ha davvero bisogno di JavaScript. Lo streaming è integrato sia nel percorso HTTP che in quello Chrome, quindi le pagine tornano indietro nel momento in cui vengono recuperate, invece di essere accumulate alla fine. Questo design offre una produttività di concorrenza ai massimi livelli, sostenendo volumi di richieste estremamente elevati che scalano da una singola attività asincrona a una flotta di worker distribuiti sulla stessa API. Proxy, retry, limitazione della frequenza e stealth sono integrati.
| Vuoi… | Esegui |
|---|---|
| Libreria Rust | cargo add spider |
| Strumento a riga di comando | cargo install spider_cli |
| Pacchetto Node.js | npm i @spider-rs/spider-rs |
| Pacchetto Python | pip install spider_rs |
| Server MCP (Claude, Cursor, …) | cargo install spider_mcp |
| Crawling gestito | spider.cloud |
Ogni opzione ha un valore predefinito sensato, quindi imposta solo ciò di cui hai bisogno.
let mut website = Website::new("https://example.com")
.with_limit(50) // concurrent requests
.with_depth(10) // how deep to follow links
.with_delay(500) // pause between requests (ms)
.with_respect_robots_txt(true)
.with_subdomains(true)
.with_user_agent(Some("MyBot/1.0"))
.with_stealth(true)
.build()
.unwrap();
Riferimento completo nella documentazione di Configuration.
Per i siti che fanno un uso intensivo di JavaScript, abilita features = ["chrome"] e chiama crawl_smart(). Spider prova prima HTTP e avvia Chrome solo sulle pagine che ne hanno bisogno.
I team usano Spider per inserire il web aperto negli archivi vettoriali per pipeline LLM e RAG, monitorare i siti per SEO e variazioni di prezzo, esportare pagine come Markdown, JSON o WARC e guidare Chrome headless per agenti di navigazione AI. Ci sono 50+ esempi eseguibili da cui partire.
Le PR sono benvenute. Vedi CONTRIBUTING.md.
cargo test -p spider # unit tests
RUN_LIVE_TESTS=1 cargo test # live network tests
MIT.