瀏覽代碼

顺序采集spider_listdata存储模式修改

maxiaoshan 2 年之前
父節點
當前提交
e2a38b8e6d
共有 3 個文件被更改,包括 21 次插入25 次删除
  1. 2 2
      src/main.go
  2. 8 12
      src/spider/spider.go
  3. 11 11
      src/spider/store.go

+ 2 - 2
src/main.go

@@ -127,8 +127,6 @@ func main() {
 	go heapprint()
 	//查列表页信息采集三级页
 	go spider.DetailData()
-	//批量保存错误数据
-	go spider.UpdateErrDataMgo()
 	//处理心跳信息
 	go spider.SaveHeartInfo()
 	//批量保存心跳信息
@@ -136,6 +134,8 @@ func main() {
 	//7000历史节点下载详情页
 	go spider.HistoryEventDownloadDetail()
 
+	//批量保存错误数据
+	//go spider.UpdateErrDataMgo()
 	//爬虫信息提交编辑器
 	//go spider.SpiderInfoSend()
 	//保存爬虫采集非本站点数据

+ 8 - 12
src/spider/spider.go

@@ -534,9 +534,7 @@ func (s *Spider) HistoricalMendDownloadDetailItem(p interface{}) {
 			// }
 		}
 		//更新spider_listdata中数据下载失败标记
-		if id != "" {
-			MgoS.UpdateById("spider_listdata", id, map[string]interface{}{"$set": map[string]interface{}{"state": -1}})
-		}
+		MgoS.UpdateById("spider_listdata", id, map[string]interface{}{"$set": map[string]interface{}{"state": -1}})
 		return
 	}
 	//详情页过滤数据
@@ -639,14 +637,12 @@ func (s *Spider) DownloadDetailItem(p interface{}, num *int) {
 	if err != nil || data == nil {
 		if err != nil {
 			logger.Error(s.Code, err, paramdata)
-			if len(paramdata) > 0 {
-				SaveErrorData(s.MUserName, paramdata, err) //保存错误信息
-			}
+			//if len(paramdata) > 0 {
+			//	SaveErrorData(s.MUserName, paramdata, err) //保存错误信息
+			//}
 		}
 		//更新spider_listdata中数据下载失败标记
-		if id != "" {
-			MgoS.UpdateById("spider_listdata", id, map[string]interface{}{"$set": map[string]interface{}{"state": -1, "updatetime": time.Now().Unix()}})
-		}
+		MgoS.UpdateById("spider_listdata", id, map[string]interface{}{"$set": map[string]interface{}{"state": -1, "updatetime": time.Now().Unix()}})
 		return
 	} else if tmphref := qu.ObjToString(data["href"]); tmphref != href { //三级页href替换导致前后href不同
 		util.RedisClusterSet(hashHref, "", -1) //全量redis中存值列表页href
@@ -962,9 +958,9 @@ func (s *Spider) DownloadDetail(reload bool, isHistory bool) {
 						times++
 						if err != nil {
 							logger.Error(s.Code, err, tmp)
-							if len(tmp) > 0 && !isHistory { //下载历史数据时不保存错误信息
-								SaveErrorData(s.MUserName, tmp, err) //保存错误信息
-							}
+							//if len(tmp) > 0 && !isHistory { //下载历史数据时不保存错误信息
+							//	SaveErrorData(s.MUserName, tmp, err) //保存错误信息
+							//}
 						} /*else if data == nil && times >= 3 { //下载问题,建editor任务
 							DownloadErrorData(s.Code, tmp)
 						}*/

+ 11 - 11
src/spider/store.go

@@ -269,18 +269,18 @@ func SaveHighListPageData(tmp map[string]interface{}, code, hashHref string, num
 //保存7410、7500、7510、7520、7700采集的列表页信息
 func SaveListPageData(tmp map[string]interface{}, id *string, isEsRepeat bool) {
 	//spider_listdata数据保证href唯一
-	if MgoS.Count("spider_listdata", map[string]interface{}{"href": tmp["href"]}) == 0 {
-		tmp["event"] = lu.Config.Uploadevent
-		tmp["comeintime"] = time.Now().Unix()
-		tmp["state"] = 0
-		tmp["exist"] = false
-		if isEsRepeat { //类竞品数据es判重掉后,更新状态
-			tmp["state"] = 1
-			tmp["exist"] = true
-			tmp["updatetime"] = time.Now().Unix()
-		}
-		*id = MgoS.Save("spider_listdata", tmp)
+	count := MgoS.Count("spider_listdata", map[string]interface{}{"href": tmp["href"]})
+	tmp["event"] = lu.Config.Uploadevent
+	tmp["comeintime"] = time.Now().Unix()
+	tmp["state"] = 0
+	tmp["exist"] = false
+	tmp["count"] = count //当前href spider_listdata已有多少条记录(可用于评估爬虫维护的及时性)
+	if isEsRepeat {      //类竞品数据es判重掉后,更新状态
+		tmp["state"] = 1
+		tmp["exist"] = true
+		tmp["updatetime"] = time.Now().Unix()
 	}
+	*id = MgoS.Save("spider_listdata", tmp)
 }
 
 //获取第day天凌晨的时间戳