基于 Rust 爬取 GitHub Trending 热门仓库
这次做的是一个很实用的小爬虫:用 Rust 抓取 GitHub Trending 页面里热门 Rust 仓库的信息,包括仓库名、描述、星标数、作者等,并把结果整理成 JSON 文件。和最初版本相比,这里重点把错误处理和 CSS 选择器做了加固,尽量让它在页面结构轻微变化时也不至于一碰就碎。
技术栈
- HTTP 请求:
reqwest,Rust 里常用的异步 HTTP 客户端 - HTML 解析:
scraper,基于 CSS 选择器,够轻量,也足够顺手 - JSON 序列化:
serde+serde_json - 异步运行时:
tokio - 日志:
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。依赖并不复杂,核心就是请求、解析、序列化和异步运行时这几块:
[package]
name = "github-trending-crawler"
version = "0.1.0"
edition = "2021"
description = "A crawler to fetch GitHub Trending Rust repositories"
license = "MIT"
[dependencies]
reqwest = { version = "0.12", features = ["json", "rustls-tls"] }
scraper = "0.18"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tokio = { version = , features = [] }
=
=
=


