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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)4 ?9 h8 H: V" }
=====================================================================
# B4 ~; v. U6 l$ O2 dimport time! q# g8 V# C9 Q0 T0 y
import os
$ k4 l; o" |9 Qfrom selenium import webdriver
- ]) }+ n+ j1 _  V9 n# k: q6 Rfrom selenium.webdriver.support.select import Select
9 T/ X& q# S% D' t: r  @driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')# V: [, ]: ~5 n; h
driver.get('www.52ocean.cn')+ ]' W# ?) I) H
#driver.get('www.52ocean.cn')8 b. [- ?+ o) ^/ D. }7 `
driver.implicitly_wait(10)* U, B: h9 k: W& t! g8 l9 f2 ?- K* V
# click ele* L$ L2 I/ b0 P7 s% a, ?
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click(), R5 `$ {9 e& g* a$ m( V. W  ?
# click S,T,U,V
9 R* J) _) P% O* Z5 ]driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click(): w' A5 L! m6 w8 s9 l0 b3 S
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()4 x/ P5 D& g7 j9 ]/ O
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
( s# T( R; `; Z- J; ~* J& zdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
8 k- w4 S4 }1 H. R& zdriver.implicitly_wait(5)
! @% F  `  F% M2 C3 }  |8 P# click Disable horizontal subsetting
  ]4 H: P: m6 `2 O( e6 g/ Rdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()) y5 y0 ^5 s7 H
# input lat,lon
+ _; y, l! S# R4 ?2 c+ B2 P3 Pdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
& M9 }0 [- L! P8 U- n+ Gdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
4 S4 i* C% {- Jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
: o; d: g% F. D# b" kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click(); [: v$ ^/ E7 ?* X; B. h
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
0 ~# a+ N9 X7 ~( Adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
# B7 L9 t8 ^3 O9 N) k- ]; Y* hdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()  L8 Y: x- }8 Y. N, q7 i& L
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
3 x- I+ b; K' W4 H& ~5 ddriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')) l% Y  ~! s$ E! t2 K  j
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
) y. j0 b' S% R9 x- \driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
2 k, g: [" |: j, z9 B5 Xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2'), p/ V$ g8 m% _7 b. _% T4 @$ i
driver.implicitly_wait(1). D5 K3 C( b1 ?6 ^; x
# click vertical stride
3 x! [/ i+ s) x( Z1 ?7 R$ adriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()  s  U8 O& A: ?% c2 G- v
driver.implicitly_wait(1)
3 r& a# c! S7 {# click to add lon/lat variables
/ s2 M# W0 k5 C! h- T  m/ o* T! K8 e: a: cdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
8 G6 V: ]6 x8 Y# choose output format
8 O" d# G1 h0 v/ k, R  r# p3 ]" C* Ts = driver.find_element_by_name('accept')
! L9 C. l7 h, c) uSelect(s).select_by_value('netcdf')
9 ]; j) w0 K7 _9 g  }# click single time, and input data_time
/ ?/ K9 z! L* z% h  V4 x$ F# 天+ h" ]# @/ R0 K
n = 0% w0 q/ n# T# t& @
for m in range(3,12+1):       #月份
/ R3 ~+ ?- s1 q    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:/ N/ J; ~/ w" y9 r- q
        month_num = 31    # 天数
8 H( Y. c( x+ E, n    elif m == 4 or m == 6 or m == 9 or m == 11:" Z- b$ k$ ~; I2 i/ l
        month_num = 30    # 天数/ @+ s$ U3 f* P3 w7 \% [, _" R/ H/ G
    elif m == 2:
/ r, q. M& f9 {3 J% O% K/ m        month_num == 28    # 天数
9 G5 k& ]! \6 w1 u! F    month = str(m).zfill(2)
( H; d+ g1 m3 s3 B    for i in range(1, month_num+1):
2 W. _: M( X7 U        Day = str(i).zfill(2)
0 R: j, z. u4 \9 W$ z. \9 p; o        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期; I8 V' k% `2 k4 R
       print(keys)
7 Q% F9 t3 k/ `% l        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
' y) W: d9 q; R; B0 ?, o        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
3 J7 K8 L% u* j4 i        driver.implicitly_wait(10)
9 i2 g4 @8 |' a' b- ]9 A: t        # click to submit' }/ J2 I, j) h9 K" t1 ^+ V; P3 K* F
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
) V) {+ \5 V2 h1 w  \        #time.sleep(3); n1 v& h' j2 F" k1 g' ^) A1 ]
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()4 ~  o( I* V' O$ R
       time.sleep(20)
$ M* s7 x$ f( M5 @) ?9 I        dir = '/Users/qiujingyi/Downloads/'8 q; X2 ^6 N3 g, O# v
       oldname = '2011' + '.nc'5 [( T# g% w$ W& D2 W, _3 a( W
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'8 t5 [7 ~, t9 O8 f' @
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
7 B8 h: y$ [& k- y( O) P( |/ q'''
: r- b) b& n" O; z# 天+小时
+ S. e  I" D( v7 J8 jn = 0  ~' g1 Y! f7 w( v- @1 Z
for i in range(1, 31):
+ R" z( j- C6 V. H  [5 A    Day = str(i).zfill(2)0 {$ U, c: Y, I0 R3 t: N& D' \% J; c4 c
    for j in range(0,21,3):# h2 |4 `& m. n8 T8 k2 d+ M
        Hour = str(j).zfill(2)
8 |2 e2 h! W" Y3 |        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'9 e- Q6 H9 V! u  g
        print(keys)
$ `2 k2 q* r" j& |2 D  t: o        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()1 ^1 q6 E9 M' [6 X, F" m" e! L
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
$ m- O& y8 C- b0 D. R7 S9 s        driver.implicitly_wait(10)' q7 x, D, `7 X  P  {# u' h
        # click to submit
# ?  L6 W8 \5 h  x  A6 ]        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
. C! S: S1 E$ Z: n3 z        #time.sleep(3): q& h2 P, g# I) Z) t
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
, E2 q$ a+ \, J  j        time.sleep(10)  w2 H% S5 `" o* z1 @
        dir = '/Users/qiujingyi/Downloads/'
& i: Q4 p% q# _7 T6 D  Q/ {        oldname = '2012' + '.nc'2 M! {2 h  D5 `4 ~
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'0 Z: B1 D& S- L9 V  k4 N, U. Q9 ]
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
: f4 s3 a0 q! ~0 X, g* g# W6 U, D, e'''; _' c, r3 g* Q5 R" z: P' I6 t5 J
* v1 T1 z8 c1 r' F  Z
1 M8 K3 x' ^; N4 y. ~3 c; x" J% G/ t8 Y
                    
" g0 H9 t( c9 ~6 Q! u) ?! n. U
7 C  W' O* Z% U: [7 q                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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