收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

【Python】入门9——PyCharm脚本-HYCOM海洋数据批量下载

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
* P- ^# U& k- c9 i1 R5 e=====================================================================5 _- H, d. {8 u) d# y
import time
" j2 c4 a% c: E. a" S8 |2 @import os
( t  Z' Z" k* s! W3 y5 R/ R  s! Tfrom selenium import webdriver
: k$ Q+ ~6 a$ T' Efrom selenium.webdriver.support.select import Select& T7 S$ Q- V/ w
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
& G8 B2 R- V" c) f0 c. M( Vdriver.get('www.52ocean.cn')
$ i2 ^" r: L5 K' S* i" T! A#driver.get('www.52ocean.cn')2 G" ?0 ^) H2 d* X2 O
driver.implicitly_wait(10): P, y1 C: S: s' d  J% C8 Q8 _
# click ele
# Z# ?' ^+ `4 vdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
1 T* H1 A6 E, g$ a# click S,T,U,V
; j2 i: L2 n2 n* V* @driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
4 l; y  K& f$ d4 Y+ A. fdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()+ E" ]6 b8 f$ \- R
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
' F  J2 O* Z' D9 `3 zdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()! C7 s+ Z" C$ C. v( N* n
driver.implicitly_wait(5)
; Z9 C8 N  N+ G% A0 N4 J# click Disable horizontal subsetting+ f, j: J9 o9 v4 E, [/ W
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()2 R' T( t- h' v. p- a' N. L
# input lat,lon: K, p/ P3 d. Y3 c
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
# }( `2 S8 q1 n" x+ }driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
/ ~, y( |) K, U! s, ]( M' j% udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
; S5 X* S3 y4 W+ T' V0 jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()0 j$ d8 [: b% ?* D
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
8 f1 ^+ v  d; s( v% `0 vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
& z) X% |; o/ [driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()2 }1 Z1 u0 k) |, Z! {
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
; L' {7 {# `4 ^0 T) o# ]. q4 idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
# Q" G9 o  Y' w  v0 K) c/ Fdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
$ A$ i8 [& N. z  a1 K$ `& _2 Ddriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()0 S- y* O  c9 E  s# M- Q3 q
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')* h. l3 z+ G, \# ~, g. M' q1 [: l5 p
driver.implicitly_wait(1)6 f9 y5 t5 @3 B9 p; w4 J
# click vertical stride
* a% k1 `& B/ }- g% Ydriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
! b5 ~2 I4 q* [driver.implicitly_wait(1)- l; _9 I( l9 U: G( B7 x
# click to add lon/lat variables
" F5 A# R/ s9 i4 }$ x; Wdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click(), B0 H5 J) a3 N$ M
# choose output format3 N9 j+ S0 w& Q! s# y' n. |1 a
s = driver.find_element_by_name('accept')
! K, x& Z5 e# Z6 p  G$ h8 |Select(s).select_by_value('netcdf')( D5 I+ M6 T0 e) H$ ], n& l
# click single time, and input data_time
* y. u; G: T: y) x# 天' R2 n# V8 o& ~
n = 0
  }1 j& @9 F4 E, b! s4 Q- Ofor m in range(3,12+1):       #月份1 u* r) `/ }  b
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:+ p( k( M  b: y9 s$ Z% V( n7 D
        month_num = 31    # 天数
/ f5 S; c8 u; g- p0 }    elif m == 4 or m == 6 or m == 9 or m == 11:) {: D8 D, }! Y
        month_num = 30    # 天数1 f. E7 b! A% w/ e
    elif m == 2:/ c& _) }7 j/ W7 d
        month_num == 28    # 天数: [, t& B7 z) u+ n9 D) ?  |
    month = str(m).zfill(2)
+ P9 j: ?4 L; x: m5 o& v! W    for i in range(1, month_num+1):) @8 _/ C/ A3 ^0 O- h8 z1 r) A
        Day = str(i).zfill(2)
% G9 I7 ~: z7 f3 v( Z& i        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
' C% J, V6 ]; R. b2 I, l  Q- `       print(keys)
, Z+ I1 ~  b4 X. L; `5 t5 ~& C' V        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()1 j) T! K9 K$ }6 b' B0 B( Z# U- w
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
7 W% [5 \2 B  C; d        driver.implicitly_wait(10)8 i7 ], Q- I/ R9 H" H
        # click to submit
. M  @. ?5 |' ?3 s& B       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
! w+ w3 @0 y2 i$ p        #time.sleep(3)
" l" f! m) e; @# G5 X7 N" I        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()' b! k' u$ d2 ?
       time.sleep(20)/ `4 n; J6 |2 i6 {% z0 u
        dir = '/Users/qiujingyi/Downloads/'0 X" K% s2 F$ _# |; D# f8 k
       oldname = '2011' + '.nc'
4 Q7 V. m/ A# `6 g       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'9 j/ i9 O9 N3 U7 C, L; m" G% }
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
- M& n& Z# a/ Q8 F'''
7 Y# R- C1 [' |' r2 ]0 k# 天+小时# g* ~1 _- C$ L; g( s3 R
n = 0
: o) J* ~* i' Afor i in range(1, 31):' ~0 g: E+ K. ~9 f$ k- ]
    Day = str(i).zfill(2); C. H$ s: e7 w$ g5 I% M
    for j in range(0,21,3):
7 c: O& [; g% u/ f& u, X- S$ f8 z        Hour = str(j).zfill(2)2 R* ^: A3 a$ H5 B/ p$ |  F! t
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
* o1 s( J' O1 h$ B* |" u9 g        print(keys)
0 Z0 Q- T) q  n5 c3 c! N        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()/ ?! v# l, j. O' V: v2 u: t! R) v
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)2 O7 ~7 L# e6 t6 B8 I5 w
        driver.implicitly_wait(10): L% B9 E, q* E' P
        # click to submit
8 a/ F/ p0 X& j        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()1 I* G# H# T5 c
        #time.sleep(3)5 N/ k. L9 y2 t
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
1 c" o  s% I9 o  |! H: O        time.sleep(10)
/ I6 D' j; \5 I: ]5 N6 q        dir = '/Users/qiujingyi/Downloads/'
5 i: ?3 ?; q, A1 h1 |$ y2 ~2 ^3 M        oldname = '2012' + '.nc'
7 h" Q( ]4 q; a        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
3 V7 Z, f' R0 J4 _        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
. V: l" m, |0 k; Z'''3 C! x, k) P3 {" E6 M: q3 Z
% b- Y, |9 c7 H1 K" v/ V0 ~

  ^" L) h. Y. d; w, O0 ?, f; C                    ; K3 u7 B- W, u
% F* _7 S1 I+ |, Q! R1 g0 ~, d
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
sc8d229wo5
活跃在2021-7-26
快速回复 返回顶部 返回列表