Example #1
0
func (self *crawler) Run() {
	for {
		// 队列中取出一条请求
		req := self.GetOne()

		// 队列退出及空请求调控
		if req == nil {
			if self.canStop() {
				// log.Println("**************退出队列************")
				break
			} else {
				time.Sleep(500 * time.Millisecond)
				continue
			}
		}

		// 自身资源统计
		self.RequestIn()

		// 全局统计下载总页数
		cache.PageCount()

		go func(req *context.Request) {
			defer func() {
				self.FreeOne()
				self.RequestOut()
			}()
			log.Println(" *     start crawl :", req.GetUrl())
			self.Process(req)
		}(req)
	}
}
Example #2
0
func (self *crawler) Run() {
	for {
		// 随机等待
		self.sleep()

		// 队列中取出一条请求
		req := self.GetOne()

		// 队列退出及空请求调控
		if req == nil {
			if self.canStop() {
				// logs.Log.Debug("**************退出队列************")
				break
			} else {
				continue
			}
		}

		// 自身资源统计
		self.RequestIn()

		// 全局统计下载总页数
		cache.PageCount()

		go func(req *context.Request) {
			defer func() {
				self.FreeOne()
				self.RequestOut()
			}()
			logs.Log.Informational(" *     crawl: %v", req.GetUrl())
			self.Process(req)
		}(req)
	}
}