佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > go語言讀取json并下載高清妹子圖片

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

熱門標(biāo)簽:服務(wù)外包 呼叫中心市場需求 網(wǎng)站排名優(yōu)化 AI電銷 百度競價(jià)排名 Linux服務(wù)器 鐵路電話系統(tǒng) 地方門戶網(wǎng)站

學(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}"
)
// 壁紙類型,有編號,長寬和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.")
}

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

您可能感興趣的文章:
  • Go語言中轉(zhuǎn)換JSON數(shù)據(jù)簡單例子
  • Go語言對JSON進(jìn)行編碼和解碼的方法
  • 在Go語言程序中使用gojson來解析JSON格式文件
  • 使用Go語言解析動態(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)簽:衡水 湖南 崇左 仙桃 蘭州 銅川 黃山 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go語言讀取json并下載高清妹子圖片》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    潞城市| 天台县| 江孜县| 略阳县| 林州市| 高阳县| 南陵县| 大邑县| 上栗县| 丹寨县| 铅山县| 礼泉县| 卢湾区| 朝阳市| 尼玛县| 中宁县| 大洼县| 南平市| 绥江县| 龙州县| 师宗县| 周至县| 淮阳县| 延边| 都江堰市| 赣州市| 荥阳市| 仙居县| 肃北| 黎平县| 金秀| 陵水| 剑川县| 探索| 克拉玛依市| 建宁县| 崇义县| 尼勒克县| 微山县| 宁蒗| 内丘县|