为什么需要热搜聚合?
做内容运营、舆情监控、或者只是想知道"现在大家都在搜什么"——你得打开百度看热搜,切微博看话题,刷抖音看榜单,再去知乎、B站、GitHub逛一圈。一个字:累。
要是有一个API,一条请求就能拿到全平台热搜数据呢?
这就是 Hot Search API 干的事。
项目简介
Hot Search API 是一个基于 Go 语言 Gin 框架开发的高性能热搜聚合服务,支持 31个中外主流平台 的实时数据抓取,包括百度、微博、抖音、知乎、GitHub、B站、今日头条、CSDN、豆瓣、虎扑等。
GitHub 地址:https://github.com/iiecho1/api-for-hot-search-golang
核心特性
1. 31个数据源,覆盖主流平台
从百度微博到GitHub V2EX,从澎湃新闻到少数派,几乎你能想到的热搜榜单都有。完整的API端点列表:
| 端点 | 平台 | 端点 | 平台 |
|---|---|---|---|
/baidu | 百度 | /weibo | 微博 |
/douyin | 抖音 | /zhihu | 知乎 |
/bilibili | B站 | /github | GitHub |
/toutiao | 今日头条 | /csdn | CSDN |
/v2ex | V2EX | /douban | 豆瓣 |
/hupu | 虎扑 | /ithome | IT之家 |
/sougou | 搜狗 | /qqnews | 腾讯新闻 |
/pengpai | 澎湃新闻 | /cctv | CCTV |
/renmin | 人民网 | /wangyinews | 网易新闻 |
/acfun | AcFun | /dongqiudi | 懂球帝 |
/tieba | 百度贴吧 | /36kr | 36氪 |
/lishipin | 梨视频 | /shaoshupai | 少数派 |
/souhu | 搜狐 | /quark | 夸克 |
/xinjingbao | 新京报 | /nanfang | 南方周末 |
/guojiadili | 国家地理 | /history | 历史上的今天 |
/360search | 360搜索 | /360doc | 360doc |
/all | 聚合全部 | /health | 健康检查 |
2. 高并发聚合——/all 接口
这是最硬核的功能。调用 /all 端点,服务会用 goroutine 并发抓取所有31个数据源,8秒超时控制,一次请求拿到全网热搜。
想想看,如果串行抓取31个源,每个1秒就要半分钟。并发下来,8秒搞定。这就是Go语言goroutine的威力。
3. 零外部依赖
编译出来就是一个二进制文件,不需要装数据库,不需要配Redis,不需要Docker。go build 完直接跑,部署成本为零。
4. 统一响应格式
所有端点返回统一的JSON格式:
{
"code": 200,
"message": "百度",
"icon": "https://www.baidu.com/favicon.ico",
"obj": [
{
"index": 1,
"title": "热搜标题",
"url": "https://...",
"hotValue": "12345"
}
]
}
code 表示状态码,message 是平台名称,icon 是平台图标,obj 数组里每条热搜包含排名、标题、链接和热度值。格式一致,前端对接非常方便。
技术架构
项目结构简洁明了:
├── main.go # 入口 + 路由注册
├── all/all.go # 聚合逻辑(并发 + 超时控制)
├── app/ # 30+ 数据源实现
└── utils/utils.go # 共享工具(HTTP/JSON/响应构建)
设计思路:
main.go负责Gin路由注册和启动app/目录下每个文件对应一个数据源,结构清晰,新增平台只需加一个文件utils/封装共享的HTTP客户端、JSON解析和响应构建,避免重复代码all/all.go是聚合核心,用sync.WaitGroup+ goroutine 并发抓取,context.WithTimeout控制超时
配置项
通过环境变量配置,极简:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
PORT | 1111 | 监听端口 |
RELEASE | false | Gin Release模式 |
ENV | development | 环境标识 |
快速上手
# 克隆项目
git clone https://github.com/iiecho1/api-for-hot-search-golang.git
cd api-for-hot-search-golang
# 直接运行
go run main.go
# 或编译后运行(推荐生产环境)
go build -o hot-search-api .
./hot-search-api
启动后访问 http://localhost:11111/baidu 即可获取百度热搜,访问 /all 获取全平台聚合数据。
实际应用场景
1. 舆情监控系统
定时调用 /all 接口,8秒内获取全网热点趋势,配合时序数据库做热度追踪。
2. 内容运营工具
聚合各平台热搜,帮助运营人员快速发现热点话题,选题策划效率翻倍。
3. 浏览器插件/小程序
前端调用单平台接口,轻量快速,适合做热搜聚合类产品。
4. 数据分析
配合项目关联的 hot_searches_for_apps 热搜归档脚本,每小时定时拉取存储,做历史趋势分析。
Go语言选择的优势
为什么不用Python/Node.js?关键优势:
- goroutine并发模型:31个数据源并发抓取,天然适合这种IO密集型任务
- 编译为单二进制:部署简单,不需要运行时环境
- 内存占用低:Go服务通常只需要几十MB内存
- Gin框架性能:轻量级Web框架,路由注册简洁,中间件丰富
小结
Hot Search API 用最简洁的方式解决了一个实际问题——热搜数据聚合。Go + Gin 的技术栈选型恰到好处,goroutine并发抓取是核心亮点,零依赖部署让上手成本极低。
如果你有热搜聚合的需求,或者想学习Go语言如何构建高并发API服务,这个项目都值得一看。
GitHub: https://github.com/iiecho1/api-for-hot-search-golang