
Obtén datos web para agentes de IA y LLMs
El rastreador y extractor de datos web más rápido para Rust.
Spider es un motor de rastreo con enfoque principal en la concurrencia, escrito en Rust. Transmite páginas a medida que llegan, renderiza JavaScript únicamente en las páginas que lo necesitan y escala desde un único script hasta una flota distribuida sin modificar tu código. El mismo motor ejecuta Spider Cloud, por lo que puedes prototipar localmente y pasar a una infraestructura gestionada con un solo cambio de configuración.
La parte más difícil del rastreo a gran escala no es el código. Son los proxies, los navegadores headless y la rotación constante anti-bots. Spider Cloud se encarga de todo eso por ti detrás de la misma API.
Obtén una clave API gratuita → (no se requiere tarjeta)
[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, stealth scrape when blocked
let mut website = Website::new("https://example.com")
.with_spider_cloud_config(cloud)
.build()?;
El modo Smart enruta primero a través de proxies y escala a un /scrape sigiloso únicamente en las páginas que ofrecen resistencia, por lo que pagas por eludir solo donde es necesario.
Sin clave, sin servicio. Solo el rastreador.
[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();
}
Las páginas se transmiten a medida que se obtienen. El rastreador encuentra los enlaces, se mantiene dentro de los límites que estableces y se detiene por sí solo.
Spider prioriza HTTP y lanza Chrome headless únicamente cuando una página necesita JavaScript. Tanto la ruta HTTP como la de Chrome transmiten datos, por lo que las páginas regresan a medida que se obtienen en lugar de agruparse al final. La misma API impulsa una única tarea asíncrona o una flota de trabajadores distribuidos, y el modelo de concurrencia no cambia entre ellos. Los proxies, reintentos, limitación de velocidad y modo sigiloso están integrados.
| Lo que necesitas… | Ejecutar |
|---|---|
| Biblioteca Rust | cargo add spider |
| Herramienta de línea de comandos | cargo install spider_cli |
| Paquete de Node.js | npm i @spider-rs/spider-rs |
| Paquete de Python | pip install spider_rs |
| Servidor MCP (Claude, Cursor, …) | cargo install spider_mcp |
| Rastreo gestionado | spider.cloud |
Cada opción tiene un valor predeterminado sensato, por lo que configura solo lo que necesitas.
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();
Referencia completa en la documentación de Configuration.
Para sitios con mucho JavaScript, habilita features = ["chrome"] y llama a crawl_smart(). Spider intenta HTTP primero y solo lanza Chrome en las páginas que lo necesitan.
Los equipos utilizan Spider para alimentar almacenes vectoriales con la web abierta para pipelines de LLM y RAG, monitorear sitios en busca de cambios en SEO y precios, exportar páginas como Markdown, JSON o WARC, y controlar Chrome headless para agentes de navegación con IA. Hay más de 50 ejemplos ejecutables para comenzar.
Se aceptan PRs. Consulta CONTRIBUTING.md.
cargo test -p spider # unit tests
RUN_LIVE_TESTS=1 cargo test # live network tests
MIT.