学习Golang语言也有一段时间了,对Golang的一些特性和优点也了解了不少,工作闲暇之余写了个爬取网页图片的小工具玩,有喜欢的码友可以下载下来编译玩玩,项目代码路径:https://github.com/xiezhijun/spidderGO.git
代码中主要是用 go 和 channel 配合使用,开启多个线程并发处理,一边爬取并解析网页,一边下载图片,如图所示:
waitGroup.Add(1)
go func() {
urls = append(urls, TARGET_URL)
for url:=urls[0]; len(urls)>0;{
getUrl(url)
}
fmt.Println("解析所有url结束!")
// 解析完成,释放chanUrl
close(chanUrl)
waitGroup.Done()
}()
waitGroup.Add(1)
go func() {
for url := range chanUrl {
getPictureUrl(url)
}
fmt.Println("解析所有图片url结束!")
// 解析完成,释放chanUrl
close(chanImgUrl)
waitGroup.Done()
}()
// 解析目标url
chanUrl <- TARGET_URL
// 开启多个下载线程
for i:=0; i<5; i++ {
waitGroup.Add(1)
go readChanUrl(chanImgUrl)
}
waitGroup.Wait()
这

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



