Browse Source

睿姿得数据爬取落库

gmy 4 months ago
parent
commit
e617a704ed

+ 4 - 46
services/ruizide/data_processor.go

@@ -32,16 +32,8 @@ var (
 	dateSlicerInputSelector        = `div.visualContainer.unselectable.readMode.hideBorder.visualHeaderBelow.droppableElement.ui-droppable div.date-slicer-control input.date-slicer-input.enable-hover`
 	downloadButtonSelector         = `div.btn.btn-link.btn-sm.dashboard-action.dashboard-action--download-data`
 
-	oilDemandIframeSelector    = `div#WithPollingInFrame iframe` // 根据实际 iframe 的选择器更新
-	tabSelectorBase            = `h3.preTextWithEllipsis`        // H3 标签中每个标签的基础选择器
-	continentTabSelector       = tabSelectorBase + `:contains("Continent")`
-	regionTabSelector          = tabSelectorBase + `:contains("Region")`
-	countryTabSelector         = tabSelectorBase + `:contains("Country")`
-	productCategoryTabSelector = tabSelectorBase + `:contains("Product category")`
-	productDetailTabSelector   = tabSelectorBase + `:contains("Product detail")`
-	sectorCategoryTabSelector  = tabSelectorBase + `:contains("Sector category")`
-	sectorDetailTabSelector    = tabSelectorBase + `:contains("Sector detail")`
-	scenarioTabSelector        = tabSelectorBase + `:contains("Scenario")`
+	oilDemandIframeSelector = `div#WithPollingInFrame iframe` // 根据实际 iframe 的选择器更新
+	tabSelectorBase         = `h3.preTextWithEllipsis`        // H3 标签中每个标签的基础选择器
 )
 
 // 函数用于点击下载按钮
@@ -149,40 +141,6 @@ func downloadData(ctx context.Context) error {
 	return nil
 }
 
-// 函数用于处理不同标签的下载
-func downloadOilDemandByTab(ctx context.Context, tabSelector string, year string, fileName string) error {
-	// 切换到 iframe 并在 iframe 内进行操作
-	if err := chromedp.Run(ctx,
-		chromedp.WaitVisible(oilDemandIframeSelector, chromedp.ByQuery), // 等待 iframe 可见
-		chromedp.ActionFunc(func(ctx context.Context) error {
-			// 点击指定的标签
-			if err := chromedp.Click(tabSelector, chromedp.ByQuery).Do(ctx); err != nil {
-				return fmt.Errorf("点击标签失败: %v", err)
-			}
-
-			// 等待页面加载完成
-			if err := chromedp.Sleep(2 * time.Second).Do(ctx); err != nil {
-				return fmt.Errorf("等待页面加载失败: %v", err)
-			}
-
-			// 点击下载按钮
-			if err := clickDownload(ctx); err != nil {
-				return fmt.Errorf("点击下载按钮失败: %v", err)
-			}
-			return nil
-		}),
-	); err != nil {
-		return fmt.Errorf("操作失败: %v", err)
-	}
-
-	// 下载完成后,重命名文件
-	if err := waitAndRenameDownloadedFile(fileName, downloadDir); err != nil {
-		return fmt.Errorf("重命名文件失败: %v", err)
-	}
-
-	return nil
-}
-
 // 等待下载文件并重命名
 func waitAndRenameDownloadedFile(newFileName, targetDir string) error {
 	// 等待一段时间以确保文件下载完成
@@ -360,7 +318,7 @@ func main() {
 				log.Printf("postEdbLib err: %v", err)
 				return
 			}
-			_, err = utils.HttpPostRequest(utils.EDB_LIB_URL+utils.ADD_RZD_DATA_LIST, string(marshal), "application/json")
+			_, err = utils.HttpPostRequest(utils.EDB_LIB_URL+utils.ADD_BATCH_RZD_DATA, string(marshal), "application/json")
 			if err != nil {
 				// 有错误就不继续执行
 				log.Printf("postEdbLib err: %v", err)
@@ -375,7 +333,7 @@ func main() {
 			paramsLib := make(map[string]interface{})
 			paramsLib["IndexCode"] = index.IndexCode
 			paramsLib["DataTime"] = index.DataTime
-			postEdbLib, err := httpRequestFill(paramsLib, utils.GET_EDB_DATA_BY_INDEX_CODE)
+			postEdbLib, err := httpRequestFill(paramsLib, utils.GET_EDB_RZD_DATA_BY_CODE_AND_TIME)
 			if err != nil {
 				// 有错误就不继续执行
 				log.Printf("postEdbLib err: %v", err)

+ 1 - 0
services/ruizide/processor_business_logic.go

@@ -252,6 +252,7 @@ func dealClassify(tableName, sheetName string) (int, error) {
 	if requestResponse.Data.BaseFromRzdClassifyId == 0 {
 		// 一级分类不存在,新增一级分类
 		paramsLib = make(map[string]interface{})
+		paramsLib["parentId"] = 0
 		paramsLib["classifyName"] = tableName
 		postEdbLib, err = httpRequestFill(paramsLib, utils.ADD_RZD_CLASSIFY)
 		if err != nil {

+ 10 - 0
utils/constants.go

@@ -265,6 +265,16 @@ const (
 	GET_LY_INDEX_BY_CODE                              = "/ly/get/ly/index/by/code"                              // 根据指标编码获取指标
 	GET_EDB_INFO_BY_INDEX_CODE                        = "/ly/get/edb/info/by/index/code"                        // 根据指标code获取指标信息
 	ADD_BATCH_LY_EDB_DATA                             = "/ly/add/batch/ly/edb/data"                             // 批量增加粮油指标库数据
+
+	ADD_RZD_INDEX                       = "/rzd/add/rzd/index"                       // 新增睿咨得指标
+	ADD_BATCH_RZD_DATA                  = "/rzd/add/batch/rzd/data"                  // 新增数据源指标数据列表
+	GET_RZD_INDEX_DATA_BY_CODE_AND_TIME = "/rzd/get/rzd/index/data/by/code/and/time" // 根据指标编码和日期获取指标数据
+	GET_EDB_RZD_DATA_BY_CODE_AND_TIME   = "/rzd/get/edb/rzd/data/by/code/and/time"   // 根据指标编码和日期获取指标数据
+	GET_RZD_INDEX_BY_CODE               = "/rzd/get/rzd/index/by/code"               // 根据指标编码获取指标
+	GET_RZD_CLASSIFY_BY_NAME            = "/rzd/get/rzd/classify/by/name"            // 根据分类名称查询分类
+	ADD_RZD_CLASSIFY                    = "/rzd/add/rzd/classify"                    // 新增睿咨得分类
+	ADD_BATCH_RZD_EDB_DATA              = "/rzd/add/batch/rzd/edb/data"              // 批量增加指标库指标数据
+
 )
 
 const (