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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
! C  d: X( d! y1 x8 F. K# Y" m=====================================================================
$ W0 z9 x# _$ Simport time: F: S* L/ H' R/ Y9 k" F2 E! ?
import os& v9 W, E0 a0 H' P9 h
from selenium import webdriver
9 J6 {4 }# d5 V) x9 ~, ^from selenium.webdriver.support.select import Select& y# S( G  s; [5 H3 D( s
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')/ u9 s" @) O; u& I( L$ a) L( F
driver.get('www.52ocean.cn')
! Q8 q6 x% g. V- M0 z% ]* c#driver.get('www.52ocean.cn')3 m  ^0 N" \  @
driver.implicitly_wait(10)% t' X4 t( b/ j7 I- o5 c
# click ele
) \$ u" \' ~; o; ?# sdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
! Z5 e3 J8 x8 K& {- {/ _9 M9 i) g# click S,T,U,V
2 P" C3 ]% w0 n6 W2 ^driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
* X9 m: c) M% J3 E! M$ l' R: |driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()# g5 ]0 O3 H7 H7 J9 b; E3 p
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
+ F7 ~0 H' R( Vdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
. x) n, h( U* ^: Z- ]) q6 D/ Idriver.implicitly_wait(5)
- Q' U9 {, w' n! Y# click Disable horizontal subsetting7 P6 K; s: C; a6 r
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()* q+ G, T) V2 f: i) a! f
# input lat,lon
' N8 H; Y9 P: \2 mdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
! j9 P3 H, _0 m* S& Y% y& jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
8 y3 j/ f; w8 {# X% ^8 O5 N3 Cdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')0 }$ p& d# I, ^2 N6 e9 F
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
6 _9 E. x! `: P5 M& i7 b; G* qdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()( P! U+ J, C! ~1 @
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')4 b- p9 F/ r3 Y' `% i
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()# E8 K  A1 ]7 U  i9 z6 F% H
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
7 S2 C# q; E" w' L; l/ p8 u+ cdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
4 x* ^" C+ C0 p" L, d% N# G0 K6 Fdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
1 u3 O6 u1 T' z9 y2 @driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
& e* ?7 Y9 v! K* U' _driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
& }* h# T- L3 Tdriver.implicitly_wait(1)" D; L( n! _2 ~$ X) U% g
# click vertical stride1 X  i8 k9 _# Y4 \" L, R% H, h" P
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()+ T$ F) t/ r8 P. L' ^; p
driver.implicitly_wait(1)
3 c0 V" z- C' ^# L' a' ~( W7 K# click to add lon/lat variables) Y% b5 Y& p) Z$ O5 k
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()* n6 l. T  J% z4 b/ n- ^0 T, ]: a
# choose output format
  W4 z& ?5 ]6 Gs = driver.find_element_by_name('accept')
0 t, `3 r( _. ]/ k, cSelect(s).select_by_value('netcdf')' C1 c! h! y' k5 m- J. ]
# click single time, and input data_time0 |2 U" L; t/ \9 u* r
# 天
- g. u  m6 f- L0 vn = 07 l7 L  n+ H- o
for m in range(3,12+1):       #月份
5 O/ c8 Z/ f/ e4 v9 r) {* X    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:2 i2 H$ m! ]: o! c+ N. t. L
        month_num = 31    # 天数: ?/ L7 \# ^* O$ M; B' ]5 q
    elif m == 4 or m == 6 or m == 9 or m == 11:5 V6 g3 s$ |& y8 U
        month_num = 30    # 天数
/ x. ^9 T: U* V# m    elif m == 2:; X0 U3 o5 v  i+ H! M: N
        month_num == 28    # 天数$ I5 c  z) d9 C& S8 x: k* G- j7 b: d( e. Y
    month = str(m).zfill(2)
8 }5 z/ Z0 c+ |8 Z    for i in range(1, month_num+1):
& i9 m: b' m. V$ H" ~0 ?        Day = str(i).zfill(2)
. c3 k3 \2 n5 U$ |8 u        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期. B! r8 O* |! Y+ Q$ g
       print(keys)- K( v- D( B( x1 X+ u
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
$ A+ i6 D* k; a: y        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys). }" D, U" r; A, w7 m5 a. A" z# q
        driver.implicitly_wait(10)4 ?% ?" P) [4 u4 ]5 l) |, C
        # click to submit
2 S# w* i  o3 D- u+ D* f       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
* b: ?. z* S  @* C/ ^: j" I        #time.sleep(3)
+ Q2 i* t) _$ t6 X5 V        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()  }# l4 z- ~% X1 Y# {
       time.sleep(20)2 m) D& P: p9 {& B
        dir = '/Users/qiujingyi/Downloads/'
3 v: U, |, j  R  w, [) H       oldname = '2011' + '.nc'
- w* _' Y5 X8 l" w+ s! X) ~       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
) K8 |$ ~3 h# N- j! K+ Q       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
8 @1 H2 C" D( Z% T'''
8 V. o" X% }5 x9 ?& J/ X7 R# 天+小时
, Y' R- i# Y6 d7 un = 09 F: {+ @+ ?, r# K
for i in range(1, 31):& M" Z6 J  o& T- |8 `
    Day = str(i).zfill(2)" ~2 y5 H* g0 w0 K& e: S5 A
    for j in range(0,21,3):7 _2 R# C6 C7 m- C4 R* g; n1 a" e$ z5 U
        Hour = str(j).zfill(2)% W& Z# z8 N- l3 c  {+ B- W* {4 }
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
' u8 x  A3 [  I6 B  ?, |. G        print(keys)
% @4 n5 B7 s6 V8 N& B& n        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
* v( D" b' V: |4 W9 z        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
+ [1 U! E6 W5 n- A, A& R        driver.implicitly_wait(10)! ]3 F, G' P. J+ _) y
        # click to submit% Z  y3 E# n2 j) ]! Q
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
3 ~% B* [$ f* [1 f1 i( z; S& Z        #time.sleep(3)
! U! d; `1 ?. b9 }( [5 Z' `        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()4 ?$ h  i$ @: ^5 x% u7 B$ _
        time.sleep(10)
( q9 y: h( H& a3 ~2 Z        dir = '/Users/qiujingyi/Downloads/'
1 E7 |+ P$ h) I+ @7 O7 w7 V2 p5 S        oldname = '2012' + '.nc'2 A% o& a; u, Q
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'- ?' A. i. S7 `
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
+ {8 `$ h7 J" U4 B8 G3 K! c'''
. t2 d* S7 n9 t+ b4 v
+ s7 m- ]4 q! _( ^
# H- R, \5 f) _- C0 c                    
8 v3 r9 y1 J  k6 j' e4 g
  Q# A# F' Q+ W" Y- Y  c) m                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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