|
@@ -158,7 +158,7 @@ export default {
|
|
},
|
|
},
|
|
|
|
|
|
created() {
|
|
created() {
|
|
- // this.test();
|
|
|
|
|
|
+ this.test();
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
|
|
|
|
@@ -175,18 +175,46 @@ export default {
|
|
})
|
|
})
|
|
},
|
|
},
|
|
async test() {
|
|
async test() {
|
|
|
|
+ const res = await axios.get(
|
|
|
|
+ `https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p50.pl`,
|
|
|
|
+ {
|
|
|
|
+ file: "gfs.t18z.pgrb2full.0p50.f000",
|
|
|
|
+ leftlon: 0,
|
|
|
|
+ rightlon: 360,
|
|
|
|
+ toplat: 90,
|
|
|
|
+ bottomlat: -90,
|
|
|
|
+ dir: `/gfs.20250827/18/atmos`,
|
|
|
|
+ "lev_PV=1e-06_(Km^2/kg/s)_surface": "on",
|
|
|
|
+ var_TMP: "on",
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+ console.log(1111111111, res);
|
|
|
|
+ return;
|
|
|
|
+ // 获取 gfs 文件列表
|
|
const rootRes = await axios.get("/nomads");
|
|
const rootRes = await axios.get("/nomads");
|
|
const gfsList = this.extractDOM(rootRes.data, "body p");
|
|
const gfsList = this.extractDOM(rootRes.data, "body p");
|
|
const firstGfsName = gfsList[1].querySelector("a").innerHTML;
|
|
const firstGfsName = gfsList[1].querySelector("a").innerHTML;
|
|
|
|
|
|
- const gfsRes = await axios.get(`/nomads?dir=/${firstGfsName}/00/atmos`);
|
|
|
|
|
|
+ // 获取首个文件内的日期列表
|
|
|
|
+ const dateRes = await axios.get(`/nomads?dir=/${firstGfsName}`);
|
|
|
|
+ const gfsFileDateList = this.extractDOM(dateRes.data, "body td a");
|
|
|
|
+ const firstDate = gfsFileDateList[0].innerHTML;
|
|
|
|
+
|
|
|
|
+ // 获取 gfs 文件详情
|
|
|
|
+ const gfsRes = await axios.get(
|
|
|
|
+ `/nomads?dir=/${firstGfsName}/${firstDate}/atmos`
|
|
|
|
+ );
|
|
const gfsDetailPage = this.extractDOM(gfsRes.data, "body form p");
|
|
const gfsDetailPage = this.extractDOM(gfsRes.data, "body form p");
|
|
|
|
|
|
- console.log(999, gfsDetailPage);
|
|
|
|
|
|
+ // 获取 gfs 模型列表
|
|
|
|
+ const gfsModelList = gfsDetailPage[1].querySelectorAll("option");
|
|
|
|
+ let model = [];
|
|
|
|
+ for (let i = 0; i < gfsModelList.length; i++) {
|
|
|
|
+ model.push(gfsModelList[i].innerHTML.replace(/\n/g, ""));
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ // 获取级别
|
|
const levelsList = gfsDetailPage[4];
|
|
const levelsList = gfsDetailPage[4];
|
|
- const variablesList = gfsDetailPage[5];
|
|
|
|
-
|
|
|
|
const levelInputList = levelsList.querySelectorAll("input");
|
|
const levelInputList = levelsList.querySelectorAll("input");
|
|
let lvl = [];
|
|
let lvl = [];
|
|
for (let i = 0; i < levelInputList.length; i++) {
|
|
for (let i = 0; i < levelInputList.length; i++) {
|
|
@@ -200,10 +228,10 @@ export default {
|
|
|
|
|
|
lvl.shift();
|
|
lvl.shift();
|
|
|
|
|
|
- console.log(888, lvl.toString());
|
|
|
|
-
|
|
|
|
|
|
+ // 获取变量
|
|
|
|
+ const variablesList = gfsDetailPage[5];
|
|
const varInputList = variablesList.querySelectorAll("input");
|
|
const varInputList = variablesList.querySelectorAll("input");
|
|
- let variables= [];
|
|
|
|
|
|
+ let variables = [];
|
|
for (let i = 0; i < varInputList.length; i++) {
|
|
for (let i = 0; i < varInputList.length; i++) {
|
|
const ipt = varInputList[i];
|
|
const ipt = varInputList[i];
|
|
const varStr = ipt
|
|
const varStr = ipt
|
|
@@ -214,8 +242,6 @@ export default {
|
|
}
|
|
}
|
|
|
|
|
|
variables.shift();
|
|
variables.shift();
|
|
-
|
|
|
|
- console.log(777, variables.toString());
|
|
|
|
},
|
|
},
|
|
// 提取DOM元素函数
|
|
// 提取DOM元素函数
|
|
extractDOM(htmlString, selector) {
|
|
extractDOM(htmlString, selector) {
|