Exemplo n.º 1
0
// 开始执行任务
func (self *Logic) exec() {
	count := Pholcus.Spiders.Len()
	cache.ReSetPageCount()

	// 初始化资源队列
	scheduler.Init(cache.Task.ThreadNum)

	// 设置爬虫队列
	crawlNum := Pholcus.Crawls.Reset(count)

	log.Println(` *********************************************************************************************************************************** `)
	log.Printf(" * ")
	log.Printf(" *     执行任务总数(任务数[*关键词数])为 %v 个...\n", count)
	log.Printf(" *     爬虫队列可容纳蜘蛛 %v 只...\n", crawlNum)
	log.Printf(" *     并发协程最多 %v 个……\n", cache.Task.ThreadNum)
	log.Printf(" *     随机停顿时间为 %v~%v ms ……\n", cache.Task.BaseSleeptime, cache.Task.BaseSleeptime+cache.Task.RandomSleepPeriod)
	log.Printf(" * ")
	log.Printf(" *                                                                                                 —— 开始抓取,请耐心等候 ——")
	log.Printf(" * ")
	log.Println(` *********************************************************************************************************************************** `)

	// 开始计时
	cache.StartTime = time.Now()

	// 根据模式选择合理的并发
	if cache.Task.RunMode == status.OFFLINE {
		go self.goRun(count)
	} else {
		// 不并发是为保证接收服务端任务的同步
		self.goRun(count)
	}
}
Exemplo n.º 2
0
// 开始执行任务
func (self *Logic) exec() {
	count := self.SpiderQueue.Len()
	cache.ReSetPageCount()

	// 初始化资源队列
	self.Scheduler.Init(self.AppConf.ThreadNum, self.AppConf.InheritDeduplication, self.AppConf.DeduplicationTarget)

	// 设置爬虫队列
	crawlCap := self.CrawlPool.Reset(count)

	logs.Log.Informational(` *********************************************************************************************************************************** `)
	logs.Log.Informational(" * ")
	logs.Log.Informational(" *     执行任务总数(任务数[*关键词数])为 %v 个 ...\n", count)
	logs.Log.Informational(" *     爬虫池容量为 %v ...\n", crawlCap)
	logs.Log.Informational(" *     并发协程最多 %v 个 ...\n", self.AppConf.ThreadNum)
	logs.Log.Informational(" *     随机停顿时间为 %v~%v ms ...\n", self.AppConf.Pausetime[0], self.AppConf.Pausetime[0]+self.AppConf.Pausetime[1])
	logs.Log.Informational(" * ")
	logs.Log.Notice(" *                                                                                                 —— 开始抓取,请耐心等候 ——")
	logs.Log.Informational(" * ")
	logs.Log.Informational(` *********************************************************************************************************************************** `)

	// 开始计时
	cache.StartTime = time.Now()

	// 根据模式选择合理的并发
	if self.AppConf.Mode == status.OFFLINE {
		go self.goRun(count)
	} else {
		// 不并发是为保证接收服务端任务的同步
		self.goRun(count)
	}
}
Exemplo n.º 3
0
// 开始执行任务
func (self *Logic) exec() {
	count := self.Node.Spiders.Len()
	cache.ReSetPageCount()

	// 初始化资源队列
	scheduler.Init(cache.Task.ThreadNum)

	// 设置爬虫队列
	crawlCap := self.Node.Crawls.Reset(count)

	log.Println(` *********************************************************************************************************************************** `)
	log.Printf(" * ")
	log.Printf(" *     执行任务总数(任务数[*关键词数])为 %v 个 ...\n", count)
	log.Printf(" *     爬虫池容量为 %v ...\n", crawlCap)
	log.Printf(" *     并发协程最多 %v 个 ...\n", cache.Task.ThreadNum)
	log.Printf(" *     随机停顿时间为 %v~%v ms ...\n", cache.Task.Pausetime[0], cache.Task.Pausetime[0]+cache.Task.Pausetime[1])
	log.Printf(" * ")
	log.Printf(" *                                                                                                 —— 开始抓取,请耐心等候 ——")
	log.Printf(" * ")
	log.Println(` *********************************************************************************************************************************** `)

	// 开始计时
	cache.StartTime = time.Now()

	// 根据模式选择合理的并发
	if cache.Task.RunMode == status.OFFLINE {
		go self.goRun(count)
	} else {
		// 不并发是为保证接收服务端任务的同步
		self.goRun(count)
	}
}