fengweiqiang 6 жил өмнө
parent
commit
7c6e7a99f7

+ 3 - 3
src/jy/pretreated/analytable.go

@@ -760,12 +760,12 @@ func (table *Table) createTabe(trs *goquery.Selection) {
 			td := NewTD(selm, TR, table) //初始化td,kv处理,td中有table处理,td的方向
 			//num++
 			TR.AddTD(td)
-			if td.Val != "" { //删除一个tr,tr中所有td是空值的
+			if td.Val != "" && td.SonTableResult != nil{ //删除一个tr,tr中所有td是空值的
 				tdTextIsNull = false
 			}
 		})
-		//tr中所有td的内容为空 将tr删除
-		if !tdTextIsNull {
+		//向table添加每行不为空的tr
+		if tdTextIsNull {
 			table.AddTR(TR)
 		}
 	})

+ 42 - 1
src/jy/pretreated/tablev2.go

@@ -120,8 +120,43 @@ func NewTD(Goquery *goquery.Selection, tr *TR, table *Table) *TD {
 	//子table处理合并
 	if ht.Size() > 0 {
 		//qutil.Debug("有子表格")
+		//格式化正文
 		txt = TextAfterRemoveTable(td.Html)
 		td.tdHasTable(&bsontable, tr, table) //处理td中的table,块标签处理,子表解析集处理
+		//处理table外内容
+		var ub []*u.Block
+		ub, _ = DivideBlock(txt, 2, table.TableResult.RuleBlock)
+		//看是否划块
+		if len(ub) > 0 {
+			colonKvWeight := map[string]int{}
+			spaceKvWeight := map[string]int{}
+			for _, bl := range ub {
+				//冒号kv
+				for bl_ck, bl_cv := range bl.ColonKV.Kv {
+					if td.SortKV.Map[bl_ck] == nil || bl.ColonKV.KvTag[bl_ck].Weight >= colonKvWeight[bl_ck] {
+						colonKvWeight[bl_ck] = bl.ColonKV.KvTag[bl_ck].Weight
+						td.SortKV.AddKey(bl_ck, bl_cv)
+					}
+				}
+				//空格kv
+				for bl_sk, bl_sv := range bl.SpaceKV.Kv {
+					if td.SortKV.Map[bl_sk] == nil || bl.SpaceKV.KvTag[bl_sk].Weight >= spaceKvWeight[bl_sk] {
+						spaceKvWeight[bl_sk] = bl.SpaceKV.KvTag[bl_sk].Weight
+						td.SortKV.AddKey(bl_sk, bl_sv)
+					}
+				}
+			}
+		}else {
+			//调用kv解析
+			cKV := GetKVAll(txt, "", nil, 1)
+			for k,v :=range cKV.Kv{
+				td.SortKV.AddKey(k,v)
+			}
+			sKV := SspacekvEntity.Entrance(txt, "", nil)
+			for k,v :=range sKV.Kv{
+				td.SortKV.AddKey(k,v)
+			}
+		}
 	} else {
 		txt = strings.TrimSpace(td.Goquery.Text())
 	}
@@ -174,7 +209,13 @@ func (td *TD) tdHasTable(bsontable *bool, tr *TR, table *Table) {
 			}
 			sonts := AnalyTableV2(tabs, ts.Toptype, stag, td.Html, 2, ts.Id, table.TableResult.RuleBlock) //又一次调用解析表格入口
 			td.BH = false
-			td.SonTableResult = sonts
+			for k,v := range sonts.SortKV.Map{
+				if td.SonTableResult == nil{
+					td.SonTableResult = NewTableResult(sonts.Id,sonts.Toptype,sonts.BlockTag,sonts.Html,sonts.Itype,sonts.RuleBlock)
+				}
+				td.SonTableResult.SortKV.AddKey(k,v)
+			}
+			//td.SonTableResult = sonts
 			//for _, k := range sonts.SortKV.Keys {
 			//u.Debug(k, sonts.SortKV.Map[k])
 			//				td.TR.Table.StandKV[k] = sonts.SortKV.Map[k].(string)