复制即可跑!用 Colly 抓取 CoinMarketCap 全币种行情,一键导出 cryptocoinmarketcap.csv
,Excel 直接打开。
一、完整代码(中文注释)
package main
import (
"encoding/csv"
"log"
"os"
"github.com/gocolly/colly/v2"
)
func main() {
fileName := "cryptocoinmarketcap.csv"
file, err := os.Create(fileName)
if err != nil {
log.Fatalf("无法创建文件 %s: %v", fileName, err)
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
// 1. 写入表头
writer.Write([]string{
"名称", "符号", "价格(USD)", "24h成交量(USD)",
"市值(USD)", "1h涨跌", "24h涨跌", "7d涨跌",
})
// 2. 创建收集器
c := colly.NewCollector()
// 3. 解析每一行数据
c.OnHTML("#currencies-all tbody tr", func(e *colly.HTMLElement) {
writer.Write([]string{
e.ChildText(".currency-name-container"), // 币种名称
e.ChildText(".col-symbol"), // 符号
e.ChildAttr("a.price", "data-usd"), // 价格
e.ChildAttr("a.volume", "data-usd"), // 成交量
e.ChildAttr(".market-cap", "data-usd"), // 市值
e.ChildText(".percent-1h"), // 1小时涨跌
e.ChildText(".percent-24h"), // 24小时涨跌
e.ChildText(".percent-7d"), // 7天涨跌
})
})
// 4. 开始抓取
c.Visit("https://coinmarketcap.com/all/views/all/")
log.Printf("✅ 抓取完成,打开 %s 查看结果\n", fileName)
}
二、3 步运行
步骤 |
命令 |
说明 |
① 安装依赖 |
go mod init coin && go get github.com/gocolly/colly/v2 |
自动拉库 |
② 保存文件 |
复制上方代码 → main.go |
零配置 |
③ 一键运行 |
go run main.go |
终端出现 ✅ 抓取完成 |
三、结果预览(Excel 打开)
名称 |
符号 |
价格(USD) |
24h成交量(USD) |
市值(USD) |
1h涨跌 |
24h涨跌 |
7d涨跌 |
Bitcoin |
BTC |
61234.56 |
30.5B |
1.2T |
+0.12% |
-1.23% |
+5.67% |
Ethereum |
ETH |
3456.78 |
15.2B |
412.3B |
-0.45% |
+2.34% |
-3.12% |
... |
... |
... |
... |
... |
... |
... |
... |
四、常见坑 30 秒排查
症状 |
原因 |
解决 |
无数据 / 0 行 |
页面改版,选择器失效 |
用浏览器 F12 → 复制新选择器 |
文件乱码 |
Windows 用 Excel 打开 |
CSV 默认 UTF-8;Excel 数据→自文本导入 |
被 403 拦截 |
缺少 UA 或限速 |
加 colly.UserAgent("Mozilla/5.0...") 与 Limit |
五、1 分钟扩展练习
目标 |
改动一行 |
改爬 涨幅榜 |
把 URL 换成 https://coinmarketcap.com/gainers-losers/ |
保存 JSON |
用 encoding/json 替换 encoding/csv |
存 MySQL |
在 OnHTML 里写 INSERT 语句即可 |
更多建议: