Rust 实现 GitHub Trending 爬虫
本次实战将使用 Rust 构建一个异步爬虫,目标是抓取 GitHub Trending 页面中热门 Rust 仓库的详细信息(包括仓库名、描述、星标数、作者等),并将结果输出为 JSON 文件。代码重点优化了错误处理容错性和 CSS 选择器的稳定性。
技术栈
- HTTP 请求:
reqwest(Rust 最流行的 HTTP 客户端,支持异步) - HTML 解析:
scraper(基于selectors库,支持 CSS 选择器,轻量高效) - JSON 序列化:
serde+serde_json(Rust 标准的序列化 / 反序列化库) - 异步运行时:
tokio(Rust 异步编程的事实标准) - 日志:
env_logger+log(简单的日志输出,方便调试) - 错误处理:
anyhow(简化错误传递,无需手动定义复杂错误类型)
项目结构
github-trending-crawler/
├── Cargo.toml # 依赖配置
├── src/
│ └── main.rs # 核心逻辑
└── trending_repos.json # 输出结果文件(运行后生成)

初始化项目环境
创建项目
cargo new github-trending-crawler
cd github-trending-crawler
配置依赖
在 Cargo.toml 中添加必要的依赖项。版本选择上建议参考 crates.io 查询最新稳定版:
[package]
name = "github-trending-crawler"
version = "0.1.0"
edition = "2021"
description = "A crawler to fetch GitHub Trending Rust repositories"
license = "MIT"
[dependencies]
# HTTP 客户端(异步)
reqwest = { version = , features = [, ] }
=
= { version = , features = [] }
=
= { version = , features = [] }
=
=
=






