源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

go语言实现抓取高清图片

  • 时间:2020-06-10 00:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:go语言实现抓取高清图片
看到有很多python 的,然后写了个go 的,可以抓取高清图片  [b]getp.go[/b]
[url=http://me2-sex.lofter.com/tag/%E7%BE%8E%E5%A5%B3%E6%91%84%E5%BD%B1?page]http://me2-sex.lofter.com/tag/%E7%BE%8E%E5%A5%B3%E6%91%84%E5%BD%B1?page[/url]=", "[url=http://me2-sex.lofter.com/tag/%E6%AC%A7%E7%BE%8E?page]http://me2-sex.lofter.com/tag/%E6%AC%A7%E7%BE%8E?page[/url]=", "[url=http://me2-sex.lofter.com/tag/%E6%A8%A1%E7%89%B9?page]http://me2-sex.lofter.com/tag/%E6%A8%A1%E7%89%B9?page[/url]=", "[url=http://me2-sex.lofter.com/tag/%E7%BE%8E%E5%AA%9B%E9%A6%86?page]http://me2-sex.lofter.com/tag/%E7%BE%8E%E5%AA%9B%E9%A6%86?page[/url]="}     for _, v := range urlist {         for i := 1; i <= 20; i++ {             url := v + strconv.Itoa(i)             w.Add(1)             go GetAlbum(url)             w.Wait()         }     } } func GetAlbum(url string) {     data := GetUrl(url)     body := string(data)     part := regexp.MustCompile(`<a class="img" href="(.*)">`)     match := part.FindAllStringSubmatch(body, -1)     for _, v := range match {         album <- v[1]         w.Add(1)         go GetItem()     }     w.Done() } func GetItem() {     url := <-album     defer func() {         ret := recover()         if ret != nil {             log.Println(ret)             w.Done()         } else {             w.Done()         }     }()     data := GetUrl(url)     if len(data) > 10 {         body := string(data)         part := regexp.MustCompile(`bigimgsrc="(.*)"`)         match := part.FindAllStringSubmatch(body, -1)         for _, v := range match {             str := strings.Split(v[1], "/")             length := len(str)             source := GetUrl(v[1])             name := str[length-1]             file, err := os.Create(dir + name)             if err != nil {                 panic(err)             }             size, err := file.Write(source)             defer file.Close()             if err != nil {                 panic(err)             }             log.Println(size)         }     } } func GetUrl(url string) []byte {     ret, err := http.Get(url)     if err != nil {         log.Println(url)         status := map[string]string{}         status["status"] = "400"         status["url"] = url         panic(status)     }     body := ret.Body     data, _ := ioutil.ReadAll(body)     return data }
以上所述就是本文的全部内容了,希望对大家熟悉go语言能够有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部