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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)5 w& D$ H' B7 S
=====================================================================
7 w& m8 L- j4 J$ ximport time
/ b' _& E1 E9 v+ Wimport os2 @0 ~. D4 }4 b; o
from selenium import webdriver
: Z* c! N( z. gfrom selenium.webdriver.support.select import Select9 F( r- }, q/ r# d
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
7 G) I$ s5 Y$ z9 idriver.get('www.52ocean.cn')' h& d  C" q' ?: c$ K( L; y
#driver.get('www.52ocean.cn')
1 J1 `' G: z9 F; @driver.implicitly_wait(10)# N. S" F" W! U
# click ele
6 ~. _2 L# j3 Z+ j2 _driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()- R& {2 y6 o" }# f
# click S,T,U,V6 I4 Q% p2 E, S% o5 R3 _/ F8 y
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()3 m$ x7 s' U# t3 `
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
: Q0 w/ P8 ?8 b# Adriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
! G/ @0 Y3 H1 j, X- ~! R" xdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
" n1 {# O; H; G/ d, Kdriver.implicitly_wait(5)4 Z# d( E( X" }/ F8 `
# click Disable horizontal subsetting$ }) \. Z( h4 y$ Y. G; v( d* g" p
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()/ r: C) X. P  U" G
# input lat,lon1 {( |$ M- H6 {! @) |) d- H
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click(), R5 n% ^1 e/ }; I- W9 M
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
3 E! y& k6 U+ G" X: \driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')0 V# ?( d! D4 {7 o
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
- n2 b& `; \) \0 e' i+ }driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
9 G. U* F6 {" m: r  T( |  bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')- M4 ]( o. K5 Z+ C, [
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()1 P! e! J# G; A! ]. {
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
: p# c" ~! G8 \& `, wdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
  A* d2 X4 H+ q* k/ gdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()  }9 g& F# ]" C7 }9 J4 y
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
# ]) P$ R! ]) m  X7 _driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2'). E. y" |2 t+ d- E% [) N
driver.implicitly_wait(1)
" n- B9 c! s: a9 G* k; `# click vertical stride, |- L0 _& ?( }4 w
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click(), j( {1 \8 _$ K2 m
driver.implicitly_wait(1)3 p6 p6 Z2 e* c9 M9 M' u
# click to add lon/lat variables
7 }* m7 q+ C8 L2 Q- [) L- A1 O3 fdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()" q% u8 R  Y" _/ B( f& d$ j  c
# choose output format0 l) S4 P- d% K& K4 ^' ^# w
s = driver.find_element_by_name('accept')
5 `; m' l1 q7 `0 |" q  ?) [* USelect(s).select_by_value('netcdf')6 g, b1 ~4 w8 ~& ~( s( t" e
# click single time, and input data_time
6 ~4 p$ P' ~8 h! g6 A% a9 |6 i: c+ S# 天  n) \& b2 W3 S6 v
n = 0
# ?5 w) T! ?# R) ]# Lfor m in range(3,12+1):       #月份5 y% _1 i9 U9 F0 G7 ^& P% M
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
! W+ `4 h' _: o. u/ L5 r        month_num = 31    # 天数5 K/ A$ Y$ U. ?$ c' F$ }9 }! v! W; `
    elif m == 4 or m == 6 or m == 9 or m == 11:
( M7 W. \; R+ A4 W' n& C        month_num = 30    # 天数* E& \) ^# L8 g7 @( }
    elif m == 2:
% S! _+ U* i, \" k: A& ?9 j        month_num == 28    # 天数  X* z5 u4 ]( V
    month = str(m).zfill(2)) y9 W( k# ]2 a2 _8 z# E: B4 O
    for i in range(1, month_num+1):& A# F1 }% c. ?3 E2 v! B- p
        Day = str(i).zfill(2)% m1 p6 E) o  b. K$ p
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
% p. ^8 j2 j' S7 [, g# z' e2 Y       print(keys)
2 Q6 f7 v; m) e  @' q        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()6 i; a5 f6 Y$ o3 F0 |1 a1 f4 X+ B
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)- x5 s, W" `/ I# [; U9 t
        driver.implicitly_wait(10)
7 o2 J0 R7 U+ V        # click to submit
" I8 m, Y' b+ T       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()+ Z3 @; t! [0 @  u, W
        #time.sleep(3)
  f. L8 M% r( q. p* Z        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
# Q$ x* e2 P. C9 z5 c& P3 D       time.sleep(20)3 [5 R, g4 K' [
        dir = '/Users/qiujingyi/Downloads/'
# e1 R3 B* ?; A. J- [) Z! U& P       oldname = '2011' + '.nc'
+ |4 v; D) s! W4 l) B       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
( K. p% r" J5 B- v4 P2 j! p       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))' b( d0 i) d: e+ `+ V* l
'''
' G: i$ b) ]6 ~5 {# 天+小时
2 S5 j- h) ?4 L0 k5 Mn = 0% z, ~9 J0 `9 u1 d8 }: P
for i in range(1, 31):$ G. U- x9 e; d( C% p% Z* k
    Day = str(i).zfill(2)4 d2 o8 t& K. V9 f; F
    for j in range(0,21,3):
( c3 [* O  j' Q5 {' d, ^+ G        Hour = str(j).zfill(2)5 `7 C. J) U! v: F) @  _
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'$ r4 k3 T/ G0 x, ]) k& V6 ?  ^9 ^
        print(keys)  i! P0 l# z! o8 B1 @! ~  T5 {5 q
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
( t4 ^& W$ U# I8 ^        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)* U9 {3 L1 D! Z0 ?( j( O9 w' Y
        driver.implicitly_wait(10)
  r; B  A8 N' ^: [        # click to submit$ P: p- }0 H/ r6 b8 p9 W
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
+ x. n- P) W$ P5 i/ N' o4 q. c        #time.sleep(3)
7 s- q/ f) A' m+ d. Z5 W# K% Z) U        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
$ s7 H; ^% g: a& e9 O        time.sleep(10)
- ~2 U' B2 }& ?" |        dir = '/Users/qiujingyi/Downloads/': P/ E( m8 d2 [- X+ T6 D/ y' C
        oldname = '2012' + '.nc'( v: S- R6 t( S! E
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc': X  r2 J7 H- E- q
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
8 Z) L) Q5 c2 Z0 V'''
" o( C4 B& o3 `1 y- l0 `9 \5 r$ I/ @0 i2 X) Q. c$ E4 h

- L3 E( a  D+ @( d6 P6 p3 w* {5 U                    * ]2 t# A6 {0 Q. b- U" N$ |

) r% ^# B: t. U. T$ l                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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