當前位置: 首頁>>代碼示例>>Golang>>正文


Golang Request.GetUrl方法代碼示例

本文整理匯總了Golang中github.com/henrylee2cn/pholcus/app/downloader/request.Request.GetUrl方法的典型用法代碼示例。如果您正苦於以下問題:Golang Request.GetUrl方法的具體用法?Golang Request.GetUrl怎麽用?Golang Request.GetUrl使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/henrylee2cn/pholcus/app/downloader/request.Request的用法示例。


在下文中一共展示了Request.GetUrl方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: DoHistory

// 返回是否作為新的失敗請求被添加至隊列尾部
func (self *Matrix) DoHistory(req *request.Request, ok bool) bool {
	hash := makeUnique(req)

	if !req.IsReloadable() {
		self.tempHistoryLock.Lock()
		delete(self.tempHistory, hash)
		self.tempHistoryLock.Unlock()

		if ok {
			self.history.UpsertSuccess(hash)
			return false
		}
	}

	if ok {
		return false
	}

	self.failureLock.Lock()
	defer self.failureLock.Unlock()
	if _, ok := self.failures[hash]; !ok {
		// 首次失敗時,在任務隊列末尾重新執行一次
		self.failures[hash] = req
		logs.Log.Informational(" *     + 失敗請求: [%v]\n", req.GetUrl())
		return true
	}
	// 失敗兩次後,加入曆史失敗記錄
	self.history.UpsertFailure(req)
	return false
}
開發者ID:clock145,項目名稱:pholcus,代碼行數:31,代碼來源:matrix.go

示例2: Process

// core processer
func (self *crawler) Process(req *request.Request) {
	var (
		ctx     = self.Downloader.Download(self.Spider, req) // download page
		downUrl = req.GetUrl()
	)

	if err := ctx.GetError(); err != nil {
		// 返回是否作為新的失敗請求被添加至隊列尾部
		if self.Spider.DoHistory(req, false) {
			// 統計失敗數
			cache.PageFailCount()
		}
		// 提示錯誤
		logs.Log.Error(" *     Fail  [download][%v]: %v\n", downUrl, err)
		return
	}

	defer func() {
		if err := recover(); err != nil {
			if activeStop, _ := err.(string); activeStop == spider.ACTIVE_STOP {
				return
			}
			// 返回是否作為新的失敗請求被添加至隊列尾部
			if self.Spider.DoHistory(req, false) {
				// 統計失敗數
				cache.PageFailCount()
			}
			// 提示錯誤
			logs.Log.Error(" *     Panic  [process][%v]: %v\n", downUrl, err)
		}
	}()

	// 過程處理,提煉數據
	ctx.Parse(req.GetRuleName())

	// 處理成功請求記錄
	self.Spider.DoHistory(req, true)

	// 統計成功頁數
	cache.PageSuccCount()

	// 提示抓取成功
	logs.Log.Informational(" *     Success: %v\n", downUrl)

	// 該條請求文本結果存入pipeline
	for _, item := range ctx.PullItems() {
		self.Pipeline.CollectData(item)
	}
	// 該條請求文件結果存入pipeline
	for _, f := range ctx.PullFiles() {
		self.Pipeline.CollectFile(f)
	}
	// 釋放ctx準備複用
	spider.PutContext(ctx)
}
開發者ID:ReinhardHsu,項目名稱:pholcus,代碼行數:56,代碼來源:crawl.go

示例3: Process

// core processer
func (self *crawler) Process(req *request.Request) {
	var (
		downUrl = req.GetUrl()
		sp      = self.Spider
	)
	defer func() {
		if p := recover(); p != nil {
			if sp.IsStopping() {
				// println("Process$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
				return
			}
			// 返回是否作為新的失敗請求被添加至隊列尾部
			if sp.DoHistory(req, false) {
				// 統計失敗數
				cache.PageFailCount()
			}
			// 提示錯誤
			stack := make([]byte, 4<<10) //4KB
			length := runtime.Stack(stack, true)
			start := bytes.Index(stack, []byte("/src/runtime/panic.go"))
			stack = stack[start:length]
			start = bytes.Index(stack, []byte("\n")) + 1
			stack = stack[start:]
			if end := bytes.Index(stack, []byte("\ngoroutine ")); end != -1 {
				stack = stack[:end]
			}
			stack = bytes.Replace(stack, []byte("\n"), []byte("\r\n"), -1)
			logs.Log.Error(" *     Panic  [process][%s]: %s\r\n[TRACE]\r\n%s", downUrl, p, stack)
		}
	}()

	var ctx = self.Downloader.Download(sp, req) // download page

	if err := ctx.GetError(); err != nil {
		// 返回是否作為新的失敗請求被添加至隊列尾部
		if sp.DoHistory(req, false) {
			// 統計失敗數
			cache.PageFailCount()
		}
		// 提示錯誤
		logs.Log.Error(" *     Fail  [download][%v]: %v\n", downUrl, err)
		return
	}

	// 過程處理,提煉數據
	ctx.Parse(req.GetRuleName())

	// 該條請求文件結果存入pipeline
	for _, f := range ctx.PullFiles() {
		if self.Pipeline.CollectFile(f) != nil {
			break
		}
	}
	// 該條請求文本結果存入pipeline
	for _, item := range ctx.PullItems() {
		if self.Pipeline.CollectData(item) != nil {
			break
		}
	}

	// 處理成功請求記錄
	sp.DoHistory(req, true)

	// 統計成功頁數
	cache.PageSuccCount()

	// 提示抓取成功
	logs.Log.Informational(" *     Success: %v\n", downUrl)

	// 釋放ctx準備複用
	spider.PutContext(ctx)
}
開發者ID:henrylee2cn,項目名稱:pholcus,代碼行數:73,代碼來源:crawler.go

示例4: makeUnique

func makeUnique(req *request.Request) string {
	return util.MakeUnique(req.GetUrl() + req.GetMethod())
}
開發者ID:clock145,項目名稱:pholcus,代碼行數:3,代碼來源:matrix.go


注:本文中的github.com/henrylee2cn/pholcus/app/downloader/request.Request.GetUrl方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。