Golang编写的爬取网页图片的小程序

学习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()

这段代码中,开启了3个go协程任务:

       第一个用来通过源URL无限爬取网页URL资源

       第二个用来解析单个网页上的图片url

       第三个用来下载图片

网页URL,以及图片URL通过 chan 传输,是典型的生产者-消费者模式。

 

效果展示

Golang编写的爬取网页图片的小程序_第1张图片

Golang编写的爬取网页图片的小程序_第2张图片

喜欢的码友请轻轻点赞喔,看到写的不对的地方还请轻敲。

 

你可能感兴趣的:(Go)