GitHub Trending
抓取 GitHub 按日/周/月增长的热门仓库,仅使用 Python 标准库,无需安装第三方包。
何时使用
- 用户询问 GitHub 趋势、热门项目、本周热点
- 用户需要 今日 / 本周 / 本月 趋势
- 用户需要按 编程语言 筛选的 trending
快速开始
在技能目录下执行(如 github-trending-stable/):
# 本周趋势(默认),15 条
python scripts/github_trending.py weekly
# 今日趋势,10 条
python scripts/github_trending.py daily --limit 10
# 本周 Python 趋势
python scripts/github_trending.py weekly --language python
# 输出 JSON(便于管道或工具调用)
python scripts/github_trending.py weekly --json
参数说明
| 参数 | 取值 | 默认 | 说明 |
|---|---|---|---|
period | daily, weekly, monthly | weekly | 统计「新增 star」的时间范围 |
--limit | 整数 | 15 | 返回仓库数量上限 |
--language | 字符串 | 全部 | 按语言筛选(见下方) |
--json | 开关 | — | 输出 JSON 而非可读文本 |
语言:可用全称或别名。脚本支持别名:py→python、ts→typescript、js→javascript、cpp/c++→c++、c#/csharp→c#、rs→rust、rb→ruby、go→go。其他按原样传入(如 --language "c")。
输出格式
文本(默认)
- 排名、仓库
full_name、描述(最多 90 字) - 每行统计符号含义:
- 🔧 编程语言
- ⭐ 总 Star 数
- 📈 本周期新增 Star 数
- 时间为北京时区 (UTC+8)
JSON(--json)
{
"period": "weekly",
"updated_at": "2026-03-13T21:00:00+08:00",
"data": [
{
"rank": 1,
"full_name": "owner/repo",
"url": "https://github.com/owner/repo",
"description": "...",
"language": "Python",
"stars_total": "12345",
"stars_gained": 1234
}
]
}
数据来源
- 地址:
https://github.com/trending(及.../trending/<语言>?since=<周期>) - 方式:HTTP +
html.parser.HTMLParser(无需浏览器、无需登录) - 实时:每次执行都会拉取当前页面
依赖
仅使用 Python 标准库:urllib.request、html.parser、json、argparse、datetime。无需 pip 安装。
常见问题
| 现象 | 处理建议 |
|---|---|
| 返回空列表 / 无仓库 | 可能是网络提前断开(IncompleteRead)。重试;若脚本支持,可改用分块读取。 |
| 解析报错 / 结构不对 | GitHub 可能改版了页面结构,需更新脚本选择器或解析逻辑。 |
| 超时 | 检查网络;默认超时 15 秒。 |
| Windows 控制台 emoji 乱码/报错 | 设置 PYTHONIOENCODING=utf-8 或使用 --json 在别处解析。 |
说明
- 趋势按选定周期内新增的 star 排序,不是按总 star 数。
- 若需 GitHub API(如按 star 搜索、鉴权等),请使用单独的 GitHub API 类技能。