Pārlūkot izejas kodu

睿姿得 周度数据网站ui变动

gmy 3 mēneši atpakaļ
vecāks
revīzija
f38f6aebc2
1 mainītis faili ar 26 papildinājumiem un 35 dzēšanām
  1. 26 35
      services/ruizide/data_processor.go

+ 26 - 35
services/ruizide/data_processor.go

@@ -6,7 +6,6 @@ import (
 	"eta/eta_data_analysis/models"
 	"eta/eta_data_analysis/utils"
 	"fmt"
-	"github.com/chromedp/cdproto/cdp"
 	"github.com/xuri/excelize/v2"
 	"io"
 	"log"
@@ -21,11 +20,8 @@ import (
 var (
 	downloadDir  = utils.RZD_EXCEL_PATH
 	defaultDir   = utils.RZD_DOWNLOAD_PATH
-	rzdLoginPath = "https://clients.rystadenergy.com/clients/"
+	rzdLoginPath = "https://portal.rystadenergy.com/home"
 	rzdBatchSize = 500
-
-	clientSearchLink       = `div.d-none.d-lg-flex.flex-grow-1 a[href="/clients/search/"]`
-	downloadButtonSelector = `div.btn.btn-link.btn-sm.dashboard-action.dashboard-action--download-data`
 )
 
 // 处理数据下载的步骤
@@ -34,41 +30,32 @@ func downloadData(ctx context.Context) error {
 	if err := chromedp.Run(ctx,
 		chromedp.Sleep(5*time.Second), // 考虑移除这一行,如果不必要的话
 		chromedp.Navigate(rzdLoginPath),
-		chromedp.WaitVisible(`div.d-none.d-lg-flex.flex-grow-1`, chromedp.ByQuery),
-		chromedp.Click(clientSearchLink, chromedp.ByQuery),
-		chromedp.WaitVisible(`input[class="ais-SearchBox-input rounded border py-2 px-3 shadow-sm font-size-14 w-100"]`, chromedp.ByQuery),
-		chromedp.SetValue(`input[class="ais-SearchBox-input rounded border py-2 px-3 shadow-sm font-size-14 w-100"]`, "oil demand signals weekly report", chromedp.ByQuery),
-		chromedp.Sleep(10*time.Second),
-		//chromedp.Click(`div.ais-InfiniteHits li a:has(img[src="/Static/img/icons/xls.png"])`, chromedp.ByQuery),
+		chromedp.WaitVisible(`a.mat-tooltip-trigger.analytics.home__link-card-icon[href="/analytics"]`, chromedp.ByQuery), // 等待元素可见
+		chromedp.Click(`a.mat-tooltip-trigger.analytics.home__link-card-icon[href="/analytics"]`, chromedp.ByQuery),       // 点击链接
+		chromedp.Sleep(5*time.Second),
 	); err != nil {
 		return fmt.Errorf("下载 Analytics Library 数据错误: %v", err)
 	}
-
-	xpath := `//div[@id='search-page-hits']//li//a[.//div//span[@class='align-middle' and text()='Data']]`
-	var inputCount int
-	var nodes []*cdp.Node // 使用 *cdp.Node
 	if err := chromedp.Run(ctx,
-		chromedp.ActionFunc(func(ctx context.Context) error {
-
-			// 获取匹配的节点
-			if err := chromedp.Nodes(xpath, &nodes, chromedp.BySearch).Do(ctx); err != nil {
-				return fmt.Errorf("检查节点失败: %v", err)
-			}
-
-			// 获取节点数量
-			inputCount = len(nodes)
-			fmt.Printf("找到 %d 个匹配的元素\n", inputCount)
+		chromedp.WaitVisible(`#intro-home-page-step1`, chromedp.ByID),                                  // 等待 input 元素可见
+		chromedp.SetValue(`#intro-home-page-step1`, "oil demand signals weekly report", chromedp.ByID), // 设置值
+		chromedp.SendKeys(`#intro-home-page-step1`, "\u000D", chromedp.ByID),                           // 模拟按下回车键 (\u000D 是回车的 Unicode)
+		chromedp.Sleep(5*time.Second),
+	); err != nil {
+		return fmt.Errorf("设置 input 标签值时发生错误: %v", err)
+	}
 
-			if inputCount > 0 {
-				// 点击第一个节点
-				return chromedp.MouseClickNode(nodes[0]).Do(ctx) // 使用 []cdp.NodeID
-			}
-			return nil
-		}),
-		chromedp.Sleep(10*time.Second),
+	if err := chromedp.Run(ctx,
+		// 等待第一个 download-btns div 和下载按钮可见
+		chromedp.WaitVisible(`//div[contains(@class, 'download-btns')][1]//ul//li//button[contains(@class, 'mat-tooltip-trigger') and contains(@class, 'download__excel') and normalize-space(text())='Data']`, chromedp.BySearch),
+		// 点击第一个 div 中的 Excel 下载按钮
+		chromedp.Click(`//div[contains(@class, 'download-btns')][1]//ul//li//button[contains(@class, 'mat-tooltip-trigger') and contains(@class, 'download__excel') and normalize-space(text())='Data']`, chromedp.BySearch),
+		// 可选:等待下载完成,可以调整等待时间
+		chromedp.Sleep(5*time.Second), // 根据下载时间设置
 	); err != nil {
-		return fmt.Errorf("下载 Analytics Library 数据错误: %v", err)
+		return fmt.Errorf("点击第一个下载按钮时发生错误: %v", err)
 	}
+
 	// 解析文件移动到目标目录
 	if err := waitAndRenameDownloadedFile("Oil_Demand_Signals_Weekly_Report_"+utils.GetCurrentYearMonth()+".xlsx", downloadDir); err != nil {
 		return err
@@ -150,6 +137,10 @@ func moveFile(source, destination string) error {
 	return nil
 }
 
+func main() {
+	ResolverNet(context.Background())
+}
+
 // 解析网页数据,下载文件
 // func main() {
 func ResolverNet(cont context.Context) (err error) {
@@ -409,8 +400,8 @@ func login(ctx context.Context) error {
 		chromedp.Sleep(5*time.Second),
 
 		// 等待并点击登录后页面的链接
-		chromedp.WaitVisible(`a[href="/clients/"]`, chromedp.ByQuery), // 等待 Analytics Library 链接可见
-		chromedp.Sleep(5*time.Second),                                 // 等待页面加载完成
+		/*chromedp.WaitVisible(`a[href="/home"]`, chromedp.ByQuery), // 等待 Analytics Library 链接可见
+		chromedp.Sleep(5*time.Second),     */ // 等待页面加载完成
 	)
 }