一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Golang - go語(yǔ)言讀取json并下載高清妹子圖片

go語(yǔ)言讀取json并下載高清妹子圖片

2020-04-25 14:59腳本之家 Golang

前面我們介紹了使用python下載高清妹子圖,作為程序猿,我們當(dāng)然不能只會(huì)一種語(yǔ)言,今天我們就來(lái)使用go語(yǔ)言來(lái)讀取API來(lái)下載妹子圖吧,有需要的宅男們可以參考下。

學(xué)了一天golang,一邊看文檔一邊寫(xiě)的go讀取分析json并下載圖片
json api為愛(ài)壁紙HD mac 1920x1200版本,高清妹子圖

總結(jié):go+json=shit

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package main
import (
  "fmt"
  "io"
  "io/ioutil"
  "net/http"
  "os"
  "path/filepath"
  "strconv"
  //"encoding/json"
  "strings"
  "github.com/bitly/go-simplejson"
)
const (
  DataRoot   = "./tmp/" // 存放封面圖的根目錄
  TimeoutLimit = 10    // 設(shè)置超時(shí)時(shí)間
  PageUrl   = "http://api.lovebizhi.com/macos_v4.php?a=category&spdy=1&tid=3&order=hot&color_id=3&device=105&uuid=436e4ddc389027ba3aef863a27f6e6f9&mode=0&retina=0&client_id=1008&device_id=31547324&model_id=105&size_id=0&channel_id=70001&screen_width=1920&screen_height=1200&bizhi_width=1920&bizhi_height=1200&version_code=19&language=zh-Hans&jailbreak=0&mac=&p={pid}"
)
// 壁紙類(lèi)型,有編號(hào),長(zhǎng)寬和URL
type Wallpaper struct {
  Pid   int
  Url   string
  Width  int
  Height  int
}
// 將圖片下載并保存到本地
func SaveImage(paper *Wallpaper) {
  res, err := http.Get(paper.Url)
  defer res.Body.Close()
  if err != nil {
    fmt.Printf("%d HTTP ERROR:%s", paper.Pid, err)
    return
  }
  //按分辨率目錄保存圖片
  Dirname := DataRoot + strconv.Itoa(paper.Width) + "x" + strconv.Itoa(paper.Height) + "/"
  if ! isDirExist(Dirname) {
    os.Mkdir(Dirname, 0755);
    fmt.Printf("dir %s created\n", Dirname)
  }
  //根據(jù)URL文件名創(chuàng)建文件
  filename := filepath.Base(paper.Url)
  dst, err := os.Create(Dirname + filename)
  if err != nil {
    fmt.Println("%d HTTP ERROR:%s", paper.Pid, err)
    return
  }
  // 寫(xiě)入文件
  io.Copy(dst, res.Body)
}
func isDirExist(path string) bool {
  p, err := os.Stat(path)
  if err != nil {
    return os.IsExist(err)
  } else {
    return p.IsDir()
  }
}
func main() {
  //檢查并創(chuàng)建臨時(shí)目錄
  if ! isDirExist(DataRoot) {
    os.Mkdir(DataRoot, 0755);
    fmt.Println("dir %s created", DataRoot)
  }
  //生成一個(gè)數(shù)據(jù)序列,用來(lái)獲取分頁(yè)
  pow := make([]int, 2)
  for i := range pow {
    if (i > 0) {
      url := strings.Replace(PageUrl, "{pid}", strconv.Itoa(i), -1);
      fmt.Println(i, url);
      response, err := http.Get(url)
      if( err != nil) {
        fmt.Println(err)
        continue
      }
      body, _ := ioutil.ReadAll(response.Body)
      js, err := simplejson.NewJson(body)
      //遍歷data下的所有數(shù)據(jù)
      data := js.Get("data").MustArray()
      for _, v := range data {
        v := v.(map[string]interface{})
        for kk, vv := range v {
          if(kk == "file_id") {
            //這里 vv 是一個(gè)[]interface{} json.Number,不知道怎么取出值,這里用了比較傻的Sprintf
            vv := fmt.Sprintf("%s", vv)
            imgid,_ := strconv.Atoi(vv)
            url := fmt.Sprintf("http://s.qdcdn.com/c/%d,1920,1200.jpg", imgid)
            fmt.Println(kk, imgid, url);
            paper := &Wallpaper{imgid, url, 1920, 1200}
            SaveImage(paper);
          }
        }
      }
    }
  }
  fmt.Println("oh yes, all job done.")
}

以上就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

延伸 · 閱讀

精彩推薦
  • Golanggolang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang 通過(guò)ssh代理連接mysql的操作

    golang 通過(guò)ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過(guò)ssh代理連接mysql的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    a165861639710342021-03-08
  • Golanggolang如何使用struct的tag屬性的詳細(xì)介紹

    golang如何使用struct的tag屬性的詳細(xì)介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細(xì)介紹,從例子說(shuō)起,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看...

    Go語(yǔ)言中文網(wǎng)11352020-05-21
  • GolangGolang通脈之?dāng)?shù)據(jù)類(lèi)型詳情

    Golang通脈之?dāng)?shù)據(jù)類(lèi)型詳情

    這篇文章主要介紹了Golang通脈之?dāng)?shù)據(jù)類(lèi)型,在編程語(yǔ)言中標(biāo)識(shí)符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語(yǔ)言中標(biāo)識(shí)符允許由...

    4272021-11-24
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    helight2992020-05-14
  • Golanggo日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    go日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang中Bit數(shù)組的實(shí)現(xiàn)方式

    Golang中Bit數(shù)組的實(shí)現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    天易獨(dú)尊11682021-06-09
  • Golanggo語(yǔ)言制作端口掃描器

    go語(yǔ)言制作端口掃描器

    本文給大家分享的是使用go語(yǔ)言編寫(xiě)的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線(xiàn)程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
主站蜘蛛池模板: 国产在线激情视频 | 国产女王女m视频vk 国产农村一级特黄α真人毛片 | 免费国产白棉袜踩踏区域 | 精精国产xxxx视频在线播放器 | 18性夜影院午夜寂寞影院免费 | 变态np虐高h | 极品美女aⅴ高清在线观看 极品ts赵恩静和直男激战啪啪 | 免费一区视频 | 日韩高清无砖砖区2022 | 色屁屁www| 暴露狂婷婷 | 99热这里有免费国产精品 | 日本福利视频网站 | 国产精品亚洲精品日韩已方 | 校花的第一次好紧好爽 | 亚洲男人第一天堂 | 91爱啪 | 日本最新免费二区 | 忘忧草研究院一二三 | 免费特黄一级欧美大片在线看 | 国产亚洲精品视频中文字幕 | 亚洲+欧美+国产+综合 | 亚洲国产资源 | 91麻豆精东果冻天美传媒老狼 | 天天色天天色天天色 | 91久久偷偷做嫩草影院免费看 | 精品午夜久久网成年网 | 欧美一级片在线视频 | 动漫美女隐私尿口图片 | 99视频免费在线 | 国产日韩欧美视频 | 千金肉奴隶免费观看 | 熟睡中的麻麻大白屁股小说 | 狠狠色婷婷狠狠狠亚洲综合 | 欧美日韩国产成人精品 | 大又大又黄又爽免费毛片 | 青草久久网 | 无套内射在线观看THEPORN | 亚洲国产成人在线视频 | www.91麻豆 | 唯美 清纯 另类 亚洲制服 |