go语言实现抓取高清图片
看到有很多python的,然后写了个go的,可以抓取高清图片
getp.go
packagemain import( "io/ioutil" "log" "net/http" "os" "regexp" "strconv" "strings" "sync" ) varurlist[4]string varalbumchanstring varwsync.WaitGroup vardirstring funcmain(){ dir="tmp/" err:=os.Mkdir(dir,0777) iferr!=nil{ isexist:=os.IsExist(err) log.Println(isexist) } album=make(chanstring,200) urlist=[4]string{"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/%E6%AC%A7%E7%BE%8E?page=","http://me2-sex.lofter.com/tag/%E6%A8%A1%E7%89%B9?page=","http://me2-sex.lofter.com/tag/%E7%BE%8E%E5%AA%9B%E9%A6%86?page="} for_,v:=rangeurlist{ fori:=1;i<=20;i++{ url:=v+strconv.Itoa(i) w.Add(1) goGetAlbum(url) w.Wait() } } } funcGetAlbum(urlstring){ data:=GetUrl(url) body:=string(data) part:=regexp.MustCompile(`<aclass="img"href="(.*)">`) match:=part.FindAllStringSubmatch(body,-1) for_,v:=rangematch{ album<-v[1] w.Add(1) goGetItem() } w.Done() } funcGetItem(){ url:=<-album deferfunc(){ ret:=recover() ifret!=nil{ log.Println(ret) w.Done() }else{ w.Done() } }() data:=GetUrl(url) iflen(data)>10{ body:=string(data) part:=regexp.MustCompile(`bigimgsrc="(.*)"`) match:=part.FindAllStringSubmatch(body,-1) for_,v:=rangematch{ str:=strings.Split(v[1],"/") length:=len(str) source:=GetUrl(v[1]) name:=str[length-1] file,err:=os.Create(dir+name) iferr!=nil{ panic(err) } size,err:=file.Write(source) deferfile.Close() iferr!=nil{ panic(err) } log.Println(size) } } } funcGetUrl(urlstring)[]byte{ ret,err:=http.Get(url) iferr!=nil{ log.Println(url) status:=map[string]string{} status["status"]="400" status["url"]=url panic(status) } body:=ret.Body data,_:=ioutil.ReadAll(body) returndata }
以上所述就是本文的全部内容了,希望对大家熟悉go语言能够有所帮助。