|
@@ -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)
|