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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
2 ~+ ]! I  R% f% u5 A=====================================================================
# L0 k! I! K$ Y9 r4 R" m& L) c: Dimport time& l; u4 P) E. P( U* ^
import os
3 I4 L6 t3 E" p3 {9 ]) D0 p5 i8 hfrom selenium import webdriver
% w3 X8 C/ W1 e) Hfrom selenium.webdriver.support.select import Select
1 j( y' h! h( B' l3 Y3 B5 mdriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')! J4 N! Y4 ]) H6 }
driver.get('www.52ocean.cn')$ A* C; u6 E; m0 i& ]' R2 w
#driver.get('www.52ocean.cn')
. D. w* N3 R' Udriver.implicitly_wait(10)
* I: z9 n, K, a: F: @( S# click ele- a+ o; P, r% Z0 z3 x
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
3 h5 ~- U1 w7 u* c" _  G# click S,T,U,V; {2 K  ^6 \* S: X
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
2 r/ J6 g5 p* X' N; h4 jdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
: _6 U9 Q1 {9 `: Z! Y( m$ |driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()" H3 Z1 E& Y( w5 g4 R" X" V$ |2 r
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click(); c) N, K# \6 K  Y0 k6 m
driver.implicitly_wait(5)$ n4 O- V4 Z. |/ n- k
# click Disable horizontal subsetting, v* S% l9 a" e9 C0 j  B; T
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()8 i$ H" ^) g6 \" i* l
# input lat,lon4 X( Z) s) v( ~: |- ~" Z9 L- ?
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
7 K5 j; q+ r  b; J" G5 bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()' m2 ?2 ~( g! W4 E- n5 R. T. P
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
0 y# p( g6 f9 {/ Kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()& f$ U: S$ H* f, \- E3 e& q
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()+ i. Y- \2 n9 h8 k; h. K4 x9 L
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
* C$ Z) _; t0 X6 o" j1 r2 f& hdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
7 k( v& v- M! \% c0 F# Odriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
- ?) k0 I2 ?- ?- Z3 O9 m$ Gdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
3 m3 x5 _1 u% R/ y- F5 B* zdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
4 T. _$ N$ u4 N' Q. @: Ddriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()$ f9 A' W8 {$ C- u. [6 `6 \9 [' `
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
/ U. U! P. y/ G( Z4 r. Jdriver.implicitly_wait(1)7 O! p$ w# D' E% h
# click vertical stride
" s5 g/ R" _4 N! F* Q$ o/ Wdriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
- G. |6 g8 i& W* W0 `2 Z- x& t8 f* zdriver.implicitly_wait(1)4 a5 `6 r% Z. _. e
# click to add lon/lat variables( j9 s( h0 B% }: t8 O
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
; y- k5 b( e7 b( M# choose output format% k7 Z1 T3 p1 V8 W
s = driver.find_element_by_name('accept'); b* c6 f1 t$ y+ _, j
Select(s).select_by_value('netcdf')
3 j* h' c& O0 q* }# click single time, and input data_time+ v$ f$ R! V5 j& \  r
# 天
6 R: K2 J4 u! L% _, on = 0, V% b1 R# C! L5 L( Y3 D
for m in range(3,12+1):       #月份+ Y6 U! Z& A2 e  b( ?3 j2 U( L8 W: }
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
  A& Q8 }# D7 D* h        month_num = 31    # 天数4 Y; ~" `+ `/ P- [0 n
    elif m == 4 or m == 6 or m == 9 or m == 11:
$ ]; z3 P; d& ~( F( k8 M$ V( @- h        month_num = 30    # 天数+ P9 |! h5 E- ?0 y
    elif m == 2:
8 b- h; ~8 h' G( ]4 X/ v% \! l        month_num == 28    # 天数. W: b5 Q& R, j& F5 A7 N$ g5 r
    month = str(m).zfill(2)
6 x3 M# k. v4 N0 J0 ]    for i in range(1, month_num+1):
+ @2 e4 s- l; Z* J        Day = str(i).zfill(2)$ I* E  X1 Y! a# r+ |" d9 @6 h
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
. o6 w( ?% E# K; o1 b, R& Z+ O       print(keys)
5 i5 `6 E/ m$ M$ k- u        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
; e# N" u) U- P+ C/ d8 }        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
" B) R; L# @- X        driver.implicitly_wait(10)
$ g2 n/ w' {5 P/ Y& c) k: A        # click to submit5 @. N3 E3 G6 b  o
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click(), K5 Q7 w$ K; A5 ?9 g' d
        #time.sleep(3)
0 m7 d) r3 X: V0 C        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
& v$ @* Z+ ^# B0 A' m       time.sleep(20)
9 Z6 V. A3 @+ H7 `5 T7 {        dir = '/Users/qiujingyi/Downloads/'. ~: @5 ~! }: O. ]! X6 u
       oldname = '2011' + '.nc'$ E2 L; M! P. x' H
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'2 F* T4 A& J" s7 d! N9 j8 z3 H5 Z
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))& C+ S2 T' l& |& V* a
'''6 [8 D, S$ a8 K2 ~% G! l8 x  p6 M9 H" w
# 天+小时
5 Q# p) b% l2 }8 i. L0 zn = 0
$ z4 O2 `( a% F4 k# L) rfor i in range(1, 31):$ V# M9 X  \# h
    Day = str(i).zfill(2)
, [5 X% c9 K/ o3 r8 F+ k  Z1 x    for j in range(0,21,3):. q) }& s: y7 V' O9 z
        Hour = str(j).zfill(2)
: V) {& S% K! h3 F1 z" j        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'9 l* s( R/ b9 [' J
        print(keys)0 E5 V; o% i2 W2 F" w, J, C* M# @
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
1 u4 F$ w0 J* i0 Z: b' n        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
6 \4 Z" ]* R5 T8 J, X        driver.implicitly_wait(10)8 m: v: X% r. Q( ]' G  t% H
        # click to submit
) i3 E9 }* p  z5 V        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
, d2 P& \: P  J6 k4 G8 C4 m5 ^, t        #time.sleep(3)
' }5 s: ?& A2 O% l- u        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()+ U6 B7 S: X$ T* E% O7 }
        time.sleep(10)
2 A6 W: c8 S- _' y7 P+ ^' n$ Q        dir = '/Users/qiujingyi/Downloads/'9 g7 N% \$ k( X6 C* |7 {
        oldname = '2012' + '.nc'
& o" s2 V* z; E        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
# f/ D$ V6 {9 a6 N; U" D        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
5 G( Y  J" A4 n' l'''
2 C$ ^* s, z/ }& c# z' I% x+ v* z9 J/ Z6 D4 R! c$ }; F

# j5 q; L: X5 m- A% e: }                    
' T8 x$ f$ i2 A0 I5 z! A0 j0 r: a: j8 f0 o6 n" m  ^) _; X9 d4 q
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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