批量下载 Bing 墙纸

it2022-05-05  95

cn.bing.com 的背景图片的质量还是很高的,值得下载。

package main import ( "compress/gzip" "fmt" "io/ioutil" "log" "net/http" "net/url" "os" "path" "regexp" "strings" ) var ( httpc = &http.Client{} regWallpaper = regexp.MustCompile(`http://s.cn.bing.net/az/hprichbg/rb/[a-zA-z0-9_\-]*_1920x1080.jpg`) ) //判断网页是否使用 gzip 压缩,如果是则进行解压 func ungzipRespBody(resp *http.Response) (b []byte, err error) { body := resp.Body if strings.Contains(resp.Header.Get("Content-Encoding"), "gzip") { body, err = gzip.NewReader(resp.Body) if err != nil { return nil, err } } defer body.Close() return ioutil.ReadAll(body) } func setHeaders(req *http.Request) { req.Header.Set("Accept-Encoding", "gzip, deflate") req.Header.Set("User-Agent", "Mozilla/5.0 (Ubuntu) Chrome/38.0.2125.122") } //获取页面 func HttpGet(url string) ([]byte, error) { req, err := http.NewRequest("GET", url, nil) //创建 request if err != nil { return nil, err } setHeaders(req) resp, err := httpc.Do(req) //发送请求 if err != nil { return nil, err } return ungzipRespBody(resp) } //下载文件 func Downfile(url, target string) (err error) { body, err := HttpGet(url) if err != nil { return err } return ioutil.WriteFile(target, body, os.ModePerm) } func main() { body, err := HttpGet("http://cn.bing.com/HPImageArchive.aspx?format=js&idx=1&n=10") if err != nil { log.Panic(err) } wallpaper := regWallpaper.FindAll(body, -1) for i, wpaper := range wallpaper { wStr := string(wpaper) u, err := url.Parse(wStr) if err != nil { log.Print(err) continue } filename := path.Base(u.Path) err = Downfile(wStr, filename) if err != nil { log.Print(err) continue } fmt.Printf("%d. Downloaded %s\n", i, filename) } }

转载于:https://www.cnblogs.com/bing-l/p/4251669.html

相关资源:批量下载必应壁纸python脚本

最新回复(0)