主頁 > 知識(shí)庫(kù) > go語言讀取json并下載高清妹子圖片

go語言讀取json并下載高清妹子圖片

熱門標(biāo)簽:騰訊外呼系統(tǒng)價(jià)格 百度地圖標(biāo)注搜索關(guān)鍵詞 ?兓? 電銷機(jī)器人可以補(bǔ)救房產(chǎn)中介嗎 谷歌便利店地圖標(biāo)注 最短的地圖標(biāo)注 浙江人工智能外呼管理系統(tǒng) 電梯外呼訪客系統(tǒng) 成都呼叫中心外呼系統(tǒng)平臺(tái)

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

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

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=categoryspdy=1tid=3order=hotcolor_id=3device=105uuid=436e4ddc389027ba3aef863a27f6e6f9mode=0retina=0client_id=1008device_id=31547324model_id=105size_id=0channel_id=70001screen_width=1920screen_height=1200bizhi_width=1920bizhi_height=1200version_code=19language=zh-Hansjailbreak=0mac=p={pid}"
)
// 壁紙類型,有編號(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
  }
  // 寫入文件
  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ù)序列,用來獲取分頁
  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)容了,希望大家能夠喜歡。

您可能感興趣的文章:
  • Go語言中轉(zhuǎn)換JSON數(shù)據(jù)簡(jiǎn)單例子
  • Go語言對(duì)JSON進(jìn)行編碼和解碼的方法
  • 在Go語言程序中使用gojson來解析JSON格式文件
  • 使用Go語言解析動(dòng)態(tài)JSON格式的方法
  • 詳解Go語言RESTful JSON API創(chuàng)建
  • 關(guān)于go語言載入json可能遇到的一個(gè)坑
  • Go語言的JSON處理詳解
  • 在Go語言中使用JSON的方法
  • Go語言結(jié)構(gòu)體定義和使用方法
  • 淺談Go語言中的結(jié)構(gòu)體struct & 接口Interface & 反射
  • Go語言指針訪問結(jié)構(gòu)體的方法
  • go語言使用第三方包 json化結(jié)構(gòu)體操作示例

標(biāo)簽:盤錦 宜昌 上海 紹興 雅安 邢臺(tái) 眉山 七臺(tái)河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go語言讀取json并下載高清妹子圖片》,本文關(guān)鍵詞  語言,讀取,json,并,下載,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《go語言讀取json并下載高清妹子圖片》相關(guān)的同類信息!
  • 本頁收集關(guān)于go語言讀取json并下載高清妹子圖片的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章