各大平台热榜聚合-实时更新
//百度今日热点事件排行榜 //百度实时热点排行榜 //微博热点排行榜 //贴吧热度榜单 //V2EX热度榜单 //知乎全站热榜
本项目来自于 https://github.com/OpsFans/hotspot-online 朋友写论文要用到这个,部署到CoreOS的时候各种不如意,最近在学习golang,使用golang重写了一下,golang天生亲和Docker,非常奈斯。
演示地址:http://hotspot.280min.com/ (不一定可以访问)
-
使用http模块发送请求获得网页数据,
-
使用
github.com/PuerkitoBio/goquery
包处理html并获取想要的数据 -
使用
golang.org/x/text/encoding/simplifiedchinese
包来处理GB2312编码的转换 -
本地化处理(写入到本地json文件,已弃用,改为直接存到内存)
接口 /hotspot
会将本地json文件读取并按照需求返回为json格式接口
返回格式如下:
[{
FileName: '',
Content: [{
Name: '',
Url: ''
}]
}]
前端采用Bootstrap4 来展示,用jquery.getJSON
从远程接口获取数据,来渲染页面。
使用的golang alpine生成的镜像有点大 366MB 改为使用Scratch作镜像,大小只有5MB 奈斯
Docker-compose.yml的模式没去研究
https://harsimranmaan.medium.com/embedding-static-files-in-a-go-binary-using-go-embed-bac505f3cb9a
RUN apk --no-cache add ca-certificates \
&& update-ca-certificates
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
request, _ := http.NewRequest(http.MethodGet, weburl, nil)
response, err := client.Do(request)
if err != nil {
return nil, errors.New("NewRequest: " + err.Error())
}