作为一个篮球迷,每到 CBA 赛季开始,我总得打开好几个网页才能看全时间表和胜负,后来我干脆写了段 Go 代码,让程序替我去查,顺便还能统计出一些有意思的数据。
怎么用 Go 拿到 CBA 赛程数据
你可能会想,CBA 官网数据肯定藏得很深,其实没那么复杂,我一般这么干:

package main
import (
"fmt"
"net/http"
"io/ioutil"
"encoding/json"
"time"
)
type Schedule struct {
Date string `json:"date"`
HomeTeam string `json:"home"`
AwayTeam string `json:"away"`
Score string `json:"score"`
Status string `json:"status"` // "未开始", "进行中", "已结束"
}
func main() {
url := "https://api.cba.cn/schedule/2024-2025" // 这只是示例地址
resp, _ := http.Get(url)
body, _ := ioutil.ReadAll(resp.Body)
var schedules []Schedule
json.Unmarshal(body, &schedules)
for _, s := range schedules {
if s.Status == "已结束" {
fmt.Printf("%s %s vs %s %s\n", s.Date, s.HomeTeam, s.AwayTeam, s.Score)
}
}
}
这段代码能直接拉取所有常规赛安排,我只要取 Status 为“已结束”的记录,就能看到胜负情况。
2024-2025赛季常规赛时间表(部分)
我用代码抓了最近一周的赛程,整理成了一张表(注意:数据仅供演示,实际以官网为准):
| 日期 | 主队 | 客队 | 比分 | 胜负 |
| 2025-01-10 | 广东宏远 | 辽宁本钢 | 108:102 | 主胜 |
| 2025-01-10 | 浙江广厦 | 北京首钢 | 95:88 | 主胜 |
| 2025-01-11 | 新疆伊力特 | 上海久事 | 112:98 | 主胜 |
| 2025-01-11 | 山东高速 | 深圳马可波罗 | 104:97 | 主胜 |
| 2025-01-12 | 广东宏远 | 浙江稠州 | 99:101 | 客胜 |
你看,广东队主场赢辽宁那场,比分咬得很紧,我那天正好在 codedump.io 上跑这个程序,实时打印出结果时,心都跟着比分跳。
怎么用 Go 计算胜率
光拿到时间表还不够,我想知道球队的主客场胜率,这可以用 Go 的 map 统计:
teamStats := make(map[string]map[string]int) // teamStats["广东"]["主场胜"] = 8 // teamStats["广东"]["主场负"] = 2 // teamStats["广东"]["客场胜"] = 6 // teamStats["广东"]["客场负"] = 4
然后算胜率就行,代码不复杂,但跑出来的结果能让我边喝啤酒边跟朋友吹牛:“你看,广东主场胜率78%,客场才60%。”
一些有意思的发现
- 历史数据强队依旧稳:像广东、辽宁、浙江这几个队,常规赛前半段胜率都在70%以上。
- 但别小看黑马:今年北控有点意思,之前一直在中下游,现在竟能赢几个强队。
- 赛程密度差距大:有些队一周打4场,有的打2场,这会影响球员状态,我写了个 Go 协程并发拉数据,对比了各队赛程密度,发现最密和最疏的队差了将近一倍休息时间。
技术踩坑和优化
弄这个项目时我踩了两个坑:
- API 变化快:CBA 官网的接口样式半年前和现在不一样,得不断更新正则提取,我后来改用
goquery库直接解析 HTML 页面。 - 并发控制:一次请求太多会被封 IP,我就用
time.Sleep加了个限流。
你要是也想自己抓,建议先拿小数据集测试,别一上去就全量跑,还有,官方文档里说的“数据来自 CBA 官网”,看看就好,具体字段名经常变。
现在我开始用这个程序做点小预测
把赛程数据和历史胜负存到 SQLite 里,用 Go 写个简单的逻辑模型:主客场优势权重 0.3,近期交锋记录 0.4,球员伤病 0.3,然后跑模拟,当然这不能当真,但每次模拟完,看它猜对比赛结果时,我都会顺手在朋友圈发一句“代码说今天广东赢”,还挺有成就感。
总的来说吧,用 Go 做这个小工具,让我看球时多了一个视角,你如果想自己试,可以从抓取一个月的赛程开始,写到本地 JSON 文件里慢慢玩,代码写完后,跑一次,看一组比分,那种感觉像是自己做了个微缩版的数据中心。
本文来自作者[kyadmin]投稿,不代表678体育 - 全网热门体育赛事高清直播平台立场,如若转载,请注明出处:http://66weibo.cn/fc/1337.html
评论列表(4条)
我是678体育 - 全网热门体育赛事高清直播平台的签约作者“kyadmin”!
希望本篇文章《用 Golang 抓取 CBA 常规赛时间表和胜负情况,这事儿其实挺有意思》能对你有所帮助!
本站[678体育 - 全网热门体育赛事高清直播平台]内容主要涵盖:678体育,678体育官网,678赛事直播
本文概览:作为一个篮球迷,每到CBA赛季开始,我总得打开好几个网页才能看全时间表和胜负,后来我干脆写了段Go代码,让程序替我去查,顺便还能...