Go 获取指定bilibili av号封面图

学习编程需要不断实践,最近在学习Go语言,就试着写了一个小demo

package main

import (
	"io"
	"io/ioutil"
	"net/http"
	"os"
	"regexp"
)

func main(){
	url:=getImageUrl() //指定av 号的图片的url
	GetImage_1(url) //根据图片的url下载内容
}
func GetImage_1(url string){
	filename:=url[50:]
	print(filename)
	client := &http.Client{}//生成client参数为默认
	req,_:=http.NewRequest("GET",url,nil)
	resp,_:=client.Do(req)
	client.CloseIdleConnections()
	f, _:= os.Create(filename)
	_,err:=io.Copy(f, resp.Body)
	if err!=nil{
		print("AWDWD")
	}
}
func getImageUrl()string{
	client := &http.Client{}//生成client参数为默认
	var target string=os.Args[1]
	url:="https://www.bilibili.com/video/av"+target
	req,_:=http.NewRequest("GET",url,nil)

	req.Header.Add("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0")
	req.Header.Add("Cookie","_uuid=E5075DE9-ACE2-BEA0-01EE-0C48C8AA521F57398infoc; buvid3=57ABB601-B517-4EBF-B438-FDC1897028AE110264infoc; fts=1563797458; CURRENT_FNVAL=16; stardustvideo=1; rpdid=|(um~JJYRRmY0J'ulYJ~m~l~~; LIVE_BUVID=AUTO6615716738987550; sid=cm6ajuad; UM_distinctid=16def12b7929-0ac2c151039e5a-4c312373-100200-16def12b7931b6; bsource=seo_baidu; INTVER=1")
	resp,_:=client.Do(req)
	body,_:=ioutil.ReadAll(resp.Body)
	reg, _:= regexp.Compile("((http://i[0-9].hdslb.com/bfs/archive/)([a-z0-9]*)(.jpg))") //匹配到一个url

	resp.Body.Close()//释放网络资源
	url=reg.FindString(string(body))
	client.CloseIdleConnections()
	resp.Body.Close()
	print(url)
	return url[:76] //正则匹配不止一条。。慢慢数了url一共76个字符。。
}

编译一下就能用了 (编译后的exe 文件 +av号)
Go 获取指定bilibili av号封面图
总结:

  1. 代码不太美观,首先构造一个请求去访问指定av号的视频地址,将响应的html 使用正则表达式提取图片的地址,再次请求图片地址,将响应的内容下载到当前目录下。
  2. 正则表达式好难写啊。。。以后需要系统的学一下。
  3. 这个demo貌似没啥卵用。。直接f12找url也行…
  4. 菜鸡,轻喷
上一篇:Cookie Session


下一篇:QT+FFMPEG+SDL2.0实现视频播放