国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

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

2020-04-01 19:15:10
字體:
供稿:網(wǎng)友

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

學(xué)了一天golang,一邊看文檔一邊寫的go讀取分析json并下載圖片

json api為愛壁紙HD mac 1920x1200版本,高清妹子圖

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

 

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 萍乡市| 霍林郭勒市| 儋州市| 定襄县| 阳山县| 夏邑县| 永泰县| 福建省| 沙湾县| 南陵县| 仁怀市| 太湖县| 铁岭县| 宜丰县| 奎屯市| 曲沃县| 通榆县| 阿拉善盟| 蒲江县| 鲁甸县| 阜宁县| 扎兰屯市| 玛纳斯县| 达拉特旗| 福贡县| 武冈市| 九寨沟县| 苗栗市| 朔州市| 车致| 东方市| 吐鲁番市| 康保县| 建阳市| 沭阳县| 巴彦县| 东兴市| 丰宁| 房山区| 始兴县| 桓仁|