Bläddra i källkod

spider_listdata数据保持href唯一

maxiaoshan 2 år sedan
förälder
incheckning
443963928d
2 ändrade filer med 19 tillägg och 19 borttagningar
  1. 7 10
      src/spider/spider.go
  2. 12 9
      src/spider/store.go

+ 7 - 10
src/spider/spider.go

@@ -521,13 +521,12 @@ func (s *Spider) HistoricalMendDownloadDetailItem(p interface{}) {
 		util.RedisClusterSet(hashHref, "", -1) //过滤掉的数据存值全量redis
 		//更新mgo 要删除的数据更新spider_highlistdata state=1不再下载,更新redis
 		set["delete"] = true
-		MgoS.UpdateById("spider_listdata", id, map[string]interface{}{"$set": set})
+		MgoS.Update("spider_listdata", map[string]interface{}{"href": href}, map[string]interface{}{"$set": set}, false, true)
 		return
 	}
-	//更新spider_listdata中数据下载成功标记
-	if id != "" {
-		MgoS.UpdateById("spider_listdata", id, map[string]interface{}{"$set": set})
-	}
+	//更新spider_listdata中数据下载成功标记(根据链接更新数据state;可能由后续下载成功时更新)
+	MgoS.Update("spider_listdata", map[string]interface{}{"href": href}, map[string]interface{}{"$set": set}, false, true)
+
 	flag := true
 	t1 := util.ParseDate2Int64(qu.ObjToString(data["publishtime"])) //publishtime
 	if s.IsMustDownload {                                           //强制下载
@@ -605,7 +604,7 @@ func (s *Spider) DownloadDetailItem(p interface{}, num *int) {
 				isEsRepeat = true
 			}
 		}
-		SaveListPageData(paramdata, &id, isEsRepeat) //保存7000、7410、7500、7700节点列表页采集的信息
+		SaveListPageData(paramdata, &id, isEsRepeat) //保存7000、7410、7500、7510、7520、7700节点列表页采集的信息
 		if isEsRepeat {                              //类竞品数据title判重数据加入redis
 			util.RedisClusterSet(hashHref, "", -1) //全量存值
 			return
@@ -641,10 +640,8 @@ func (s *Spider) DownloadDetailItem(p interface{}, num *int) {
 		MgoS.Update("spider_listdata", map[string]interface{}{"href": href}, map[string]interface{}{"$set": set}, false, true)
 		return
 	}
-	//更新spider_listdata中数据下载成功标记
-	if id != "" {
-		MgoS.Update("spider_listdata", map[string]interface{}{"href": href}, map[string]interface{}{"$set": set}, false, true)
-	}
+	//更新spider_listdata中数据下载成功标记(根据链接更新数据state;可能由后续下载成功时更新)
+	MgoS.Update("spider_listdata", map[string]interface{}{"href": href}, map[string]interface{}{"$set": set}, false, true)
 
 	t1 := util.ParseDate2Int64(qu.ObjToString(data["publishtime"]))
 	if t1 > time.Now().Unix() { //防止发布时间超前

+ 12 - 9
src/spider/store.go

@@ -261,16 +261,19 @@ 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) {
-	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()
+	//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)
 	}
-	*id = MgoS.Save("spider_listdata", tmp)
 }
 
 //获取第day天凌晨的时间戳