© 2026FindAgent  · @simprr
返回列表
s

spider-rs/spider

Web crawler and scraper for Rust

ai-agentautomationcrawlerheadless-chromeindexerrustscrapingspiderweb-crawlerweb-scraping
⭐

2.4k

Stars

🔱

190

Forks

👁

18

Watchers

📋

0

Issues

RustMIT创建于 2018/1/7更新于 今天
在 GitHub 上查看访问主页
README
由 Gemini 翻译整理

Spider

Build Status Crates.io Downloads Documentation License: MIT Discord

网站 | 指南 | API 文档 | 示例 | Discord

一款高性能的 Rust 网络爬虫和抓取工具。比流行的同类工具快 200-1000 倍,并在单个库中集成了 HTTP、无头 Chrome 和 WebDriver 渲染功能。

  • 单机分钟级抓取 10 万+ 页面。查看基准测试。
  • 单一依赖库即可实现 HTTP、Chrome CDP、WebDriver 和 AI 自动化。
  • 生产级就绪,具备缓存、代理轮转、反爬虫绕过及分布式抓取功能。特性开关(Feature-gated)设计,确保只编译你所使用的功能。

快速入门

命令行工具

cargo install spider_cli
spider --url https://example.com

Rust 集成

[dependencies]
spider = "2"
use spider::tokio;
use spider::website::Website;

#[tokio::main]
async fn main() {
    let mut website = Website::new("https://example.com");
    website.crawl().await;
    println!("Pages found: {}", website.get_links().len());
}

流式处理

在页面被抓取的瞬间立即进行处理,而非等待全部完成后处理:

use spider::tokio;
use spider::website::Website;

#[tokio::main]
async fn main() {
    let mut website = Website::new("https://example.com");
    let mut rx = website.subscribe(0).unwrap();

    tokio::spawn(async move {
        while let Ok(page) = rx.recv().await {
            println!("- {}", page.get_url());
        }
    });

    website.crawl().await;
    website.unsubscribe();
}

无头 Chrome

添加一个特性开关(feature flag)即可渲染重度依赖 JavaScript 的页面:

[dependencies]
spider = { version = "2", features = ["chrome"] }
use spider::features::chrome_common::RequestInterceptConfiguration;
use spider::website::Website;

#[tokio::main]
async fn main() {
    let mut website = Website::new("https://example.com")
        .with_chrome_intercept(RequestInterceptConfiguration::new(true))
        .with_stealth(true)
        .build()
        .unwrap();

    website.crawl().await;
}

同时也支持 WebDriver(Selenium Grid、远程浏览器)和 AI 驱动的自动化。更多信息请参考示例。

基准测试

抓取 185 个页面(来源,取 10 次采样平均值):

Apple M1 Max (10 核, 64 GB 内存):

爬虫语言时间相比 Spider
spiderRust73 ms基准
node-crawlerJavaScript15 s慢 205 倍
collyGo32 s慢 438 倍
wgetC70 s慢 959 倍

Linux (2 核, 7 GB 内存):

爬虫语言时间相比 Spider
spiderRust50 ms基准
node-crawlerJavaScript3.4 s慢 68 倍
collyGo30 s慢 600 倍
wgetC60 s慢 1200 倍

随着站点规模扩大,差距会进一步拉大。当其他爬虫需要数小时工作时,Spider 可以在几分钟内处理 10 万+ 页面。这归功于 Rust 的异步运行时(tokio)、无锁数据结构以及 Linux 上可选的 io_uring 支持。详细说明

为什么选择 Spider?

大多数爬虫迫使用户在“快速但仅限 HTTP”和“灵活但缓慢的浏览器自动化”之间做选择。Spider 两者兼顾,且支持在同一次抓取任务中混合使用。

支持 HTTP、Chrome 和 WebDriver。 通过特性开关切换渲染模式。使用 HTTP 获取速度,使用 Chrome CDP 处理重度 JS 页面,使用 WebDriver 进行 Selenium Grid 或跨浏览器测试。

专为生产环境构建。 支持缓存(内存、磁盘、混合模式)、代理轮转、反爬虫指纹处理、广告拦截、抓取深度限制、Cron 定时任务以及分布式工作节点。所有这些功能均已通过 Spider Cloud 进行生产环境验证。

内置 AI 自动化。 spider_agent 增加了多模态 LLM 驱动的自动化能力:导航页面、填写表单、解决挑战并使用 OpenAI 或任何兼容 API 提取结构化数据。

特性

抓取功能:

  • 支持背压(backpressure)的并发和流式抓取
  • 用于水平扩展的分布式抓取
  • 缓存:支持内存、磁盘(SQLite)或[混合模式]
贡献者
jmDaChyres
项目信息
默认分支main
LicenseMIT License
创建时间2018/1/7
最近更新今天
GAI 中文摘要

Spider 是一个基于 Rust 语言开发的高性能网络爬虫与网页抓取框架。它旨在解决大规模数据采集效率低下的痛点,通过极致的异步并发优化,实现比传统方案快数百倍的爬取速度。

该项目集成 HTTP、Chrome CDP 和 WebDriver,支持在单一库中处理简单页面与复杂动态网页。提供开箱即用的 AI 自动化抓取能力,能够轻松应对现代 Web 环境的各种挑战。内置缓存、代理轮询及反爬虫绕过机制,全面满足生产环境的高可用需求。支持分布式爬取架构,能够快速横向扩展以应对海量数据处理任务。

适用于需要高并发、超大规模数据采集的工程师,以及构建 AI 数据集、自动化监控或搜索引擎索引的开发者。无论是在单机快速抓取还是在分布式集群环境,它都能提供卓越的性能与灵活性。