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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
3 G) o5 v+ F+ r3 {; b0 ?4 Y$ S=====================================================================
. r- U- E) E$ n1 Z1 {0 pimport time
, S  p' i8 [* t% y4 Qimport os
6 |& I2 b; u, W/ A; Ifrom selenium import webdriver( G; F; s! l& i; S
from selenium.webdriver.support.select import Select
1 ~0 ?0 w" M6 v, ydriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver'); A% F" T9 u. v" g7 L& `( }
driver.get('www.52ocean.cn')
1 t2 e1 s1 ?; E7 ]2 b" S#driver.get('www.52ocean.cn')  y/ ]+ o6 l) t
driver.implicitly_wait(10)( y. D+ E& u+ F
# click ele
8 Z2 ]) f- f  jdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()' Z2 F; K# k/ t* H1 c! v( f
# click S,T,U,V6 c- t( ~* ?2 D% l
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()# H& c1 q* ~5 O6 N& ~
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()5 g' i' E6 x( Y: l
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()& {5 p$ {% l; v, N7 y5 m* j& R! x1 M
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()) t  B2 _+ ^5 ~
driver.implicitly_wait(5)
# L6 F! r, [, O# click Disable horizontal subsetting% B/ I* A; m5 ]
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click(). r" a7 d. C: _' u' M9 w
# input lat,lon; h/ j/ W0 G3 ~! {5 l/ F
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()2 G4 p+ Y' M, v7 L( W1 |
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()% I: t# x; _, Y+ \/ L
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
- A/ E0 `% P" y3 X" T. z2 s3 c7 g5 bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()" F) a; |# y/ \# e: o# ?
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
* k! ^: Z# l. C. s' v2 @4 Qdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')8 z$ x* v# g( e% V6 v. J
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()3 |2 Q3 v# M& a6 K
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()9 D8 D2 a* f7 `+ P  @/ U4 l% a
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')* F7 y, \2 T" A5 u3 P) v
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
4 h, H" e2 \6 |* vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
4 f. ?7 `5 M7 W: C; {* n- x2 v8 ^driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')  o. `+ ~( p4 \) o7 u, n3 z
driver.implicitly_wait(1)3 C2 J$ ?. r: e: N
# click vertical stride( [8 g5 l& O! B
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()& X9 R1 {# d8 N/ H* R' D) K
driver.implicitly_wait(1)8 c% x, Q+ D; L/ K/ @) H- Y0 A
# click to add lon/lat variables  H: z  ^: N$ I2 {. u7 O: l
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
! E. L  R. e- q2 A8 W5 _  T* U# choose output format
1 J& _8 ^% o3 H# i/ D  bs = driver.find_element_by_name('accept')
1 f% ~% K1 U7 aSelect(s).select_by_value('netcdf')- {: s4 E7 E% r% Q. a; ~; ]! S
# click single time, and input data_time
5 U0 r; ?: K- l% G, }% ~8 b# 天' D+ m$ L& ?9 H( i' J! u
n = 0
2 G3 n# w+ {% v* F# Rfor m in range(3,12+1):       #月份6 q) C: b( X( H3 B+ _7 D) E
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
  R4 L" X4 v! ^% E! Q8 p        month_num = 31    # 天数0 E3 E2 m3 w* \4 X  \
    elif m == 4 or m == 6 or m == 9 or m == 11:
9 o: w) d/ c" N  F7 M8 z        month_num = 30    # 天数
( v* ], O$ f+ Y& T! G- B. [" K    elif m == 2:) o' S+ [7 B- ~
        month_num == 28    # 天数
. V+ O8 p$ j5 T6 R1 x    month = str(m).zfill(2)
) G0 I* `3 n! `; I& _    for i in range(1, month_num+1):
% b3 l! Q& s8 ~        Day = str(i).zfill(2)
1 j: F8 N- l' D: d7 O" s+ U, u        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
* [0 K& y3 z- S       print(keys)
& d' i  }" c" Y5 n& R7 k1 q        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
1 t( N$ P2 v2 V$ C" ?6 k9 O# H        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)4 W8 ~0 S, B; `7 m+ a% c4 o
        driver.implicitly_wait(10)
* t) S9 \0 C) d5 {2 u5 E        # click to submit
9 b( b$ Y& i* z1 o0 m% m       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()+ x5 `0 Y0 X; V/ w- H' A1 V
        #time.sleep(3)) F, ]4 q3 l$ X" v7 H6 h& @
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
$ q8 s3 _' F( Z2 Q! C, ?       time.sleep(20)2 ~' e" X9 {8 R7 X5 B- u: S! A& w1 \
        dir = '/Users/qiujingyi/Downloads/'
# {# k; p  Z  _, `/ ~8 ~. S. O       oldname = '2011' + '.nc'0 l  ^! A3 w4 T. `2 m' K  I
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'7 b7 |5 z6 d. l& b) l, W9 {  D. T4 \9 m
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
3 K/ X& q. b& b$ n  |0 h'''
2 V6 b( u( i# [& p# y- @# 天+小时% V; Z8 q5 v" {( B
n = 0
+ K1 ?) j/ `7 ]( qfor i in range(1, 31):# ~8 e  `! v0 A- e6 F* R
    Day = str(i).zfill(2)! Y! m. {; b% l' m
    for j in range(0,21,3):
. j+ D3 x- j  V  K        Hour = str(j).zfill(2)
6 T# p5 e# X1 f) ^/ h) w9 P        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
" ?3 o; E6 X  U+ |( ]) g- {' U3 U        print(keys)
: \, z% Q% H" q        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
+ W+ Y& G1 @% L        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
. t0 P) L. Q0 ~3 \, s        driver.implicitly_wait(10)
6 x) z7 _9 v4 U# t8 c$ c        # click to submit# O; t  c6 F8 d1 `' W6 |$ k# f
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()0 `# F8 f  M: y
        #time.sleep(3)
* h$ _% [0 c; h: a        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
+ G, e1 ]' i) |+ h        time.sleep(10)" \6 b' Q: D& B) M/ K! \
        dir = '/Users/qiujingyi/Downloads/'3 u3 Z) _% g; f" C
        oldname = '2012' + '.nc'1 U, G. q4 V) `- J
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
: O7 j9 x( o$ O4 I4 n2 _        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname)). b8 ^- C+ k3 j- Q6 q5 w7 m
'''
- j4 f% e1 U: Q% ^' e+ Y
# d+ H6 Y2 S8 C9 C' s6 h. Z1 R) w5 U3 U
                    5 G: ^1 D1 n1 v+ P4 c0 ?  X
) b% H. E: y0 |* ~8 g
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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