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语言能够有所帮助。