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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
8 ?4 U* ^4 Q6 Z  J=====================================================================+ S* [. w# C3 `( p- f6 L
import time
3 u& _% F0 L3 {, a9 H3 O6 Q) iimport os
9 I9 Q# a9 v# w( W. Nfrom selenium import webdriver
9 H1 G+ D8 m* P% v4 u! U9 Dfrom selenium.webdriver.support.select import Select
9 [3 I% w0 G7 B% idriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')6 h( }" m- v# C' m! u
driver.get('www.52ocean.cn')  ^8 u6 P$ A! P1 V, y: [/ G( z* x8 r
#driver.get('www.52ocean.cn')
5 h; A3 C2 k# g# G! Cdriver.implicitly_wait(10)/ F% o6 x3 l( b* p
# click ele
: ^; I. O; b! Rdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
5 H8 N1 S8 n3 s% S( q  n# k6 ~# click S,T,U,V; S( Y/ t: z3 @8 P* c+ `* Y5 S  S
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
; `2 f" T- c; S( p: P  ^driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
5 I: h' l. J1 s' H4 u! D8 L2 Qdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
  {; [0 r' B1 Y" `, w1 }7 k2 g! Vdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
6 b7 @! _" Q7 x! Z# ?: D& P& `driver.implicitly_wait(5)
: q5 m5 p( K" @7 Y. l4 o  L2 i# click Disable horizontal subsetting0 N, z" ^7 C6 @+ P
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click(), K  ~. {; A  z
# input lat,lon" b& W/ b! L0 e
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click(): t  M2 ]0 T1 E: ]$ u: b
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear(): |) x# K9 z7 y) ]. W; I. C
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')) g6 C, N; ^- I1 z3 x' @' F% v% S
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()+ b" z, p" y* o+ K  Z. c6 a* H0 N
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
: B" y$ w/ e% z2 Y! ~, _2 L2 R2 l5 adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
" c" o' n. L! d0 G4 I* |; o" edriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
) i4 {% ^# l# v: M- d. Z* J. x7 ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()8 m! J! W4 Q! [2 u) G1 p7 R# l
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
, d) ^2 j0 [7 P8 R4 Ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()- u. l+ N4 d. S, q+ r7 Y. K6 m( i
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
9 o4 c+ C, h2 x3 @4 p; `driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2'), x( U* E; ]9 x# m" I' k/ I
driver.implicitly_wait(1). K) W$ ?# f) V% {. K- ^! b
# click vertical stride
; G9 U9 G* |* r6 udriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()& E) L/ T1 K9 [( P2 A$ c
driver.implicitly_wait(1)1 `6 z! N* E% y# F
# click to add lon/lat variables3 H* V6 s. `# L: D7 E9 r$ c- u
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
5 O% w' F. w1 c9 D% a! Z  s) O# choose output format
) F  H* y) q* e- |1 Q9 S" os = driver.find_element_by_name('accept')* g- U' S0 ?# h; }- {; B$ |2 [
Select(s).select_by_value('netcdf')- [# r/ T, j" x
# click single time, and input data_time
4 T8 @, x0 `/ R! L4 X/ v( Y# 天
0 m" c! a6 y4 T  n7 z5 o3 T0 B4 V, L. _n = 0
- j% w2 f3 F- J" h$ f4 sfor m in range(3,12+1):       #月份
- ?6 q2 _; F" q    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:+ @3 M0 y: K3 x) X& Z* h
        month_num = 31    # 天数
' k% G' S  @$ Z# L& c* h    elif m == 4 or m == 6 or m == 9 or m == 11:2 i9 p/ W. V* x( C
        month_num = 30    # 天数
- R0 ]( h: a: [* \4 _    elif m == 2:
& ]& c& E6 {5 Z: u7 t% M        month_num == 28    # 天数6 n5 U5 y; ]2 B0 k3 o, U
    month = str(m).zfill(2)$ i5 S4 a$ g  W1 W4 w
    for i in range(1, month_num+1):
$ t0 i) z' V4 o: ?5 o        Day = str(i).zfill(2)2 k# A% f5 J. U2 U0 S3 P
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
8 r. G2 S& S, M+ c       print(keys)' h6 O. E$ m6 ~( u' q2 o3 g" W
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()0 h4 M- ?( n& g) I$ n# I; V
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)- x( o8 `) a4 ~8 y$ v
        driver.implicitly_wait(10)
; l. ?) |( d( L! A+ B5 E: D        # click to submit0 g9 T# o- D/ t* j1 n9 P3 U
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()4 F( s, ]# F" X0 h$ j
        #time.sleep(3)
3 B7 e/ B, X$ ~        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
) C* c" H- N' e% r: A) B5 c       time.sleep(20)- r$ P0 F! g7 V  Y2 U" D% ^2 P
        dir = '/Users/qiujingyi/Downloads/'9 E  |! J1 h9 g1 x0 F: W
       oldname = '2011' + '.nc'
! k) c2 {0 n7 E0 M* F6 Z/ l+ C       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'0 n8 a0 x- D4 k) B/ U0 N( r: }
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
+ ^0 v! ^; }: p9 v6 d: X'''
& Z. m' v% D4 F- n' X! G8 B# 天+小时! u# w, A1 M( P, E5 S! m
n = 06 s* o: E7 D" B" R1 l
for i in range(1, 31):* G8 S/ d& ^* S6 e
    Day = str(i).zfill(2)
: l* ^- r, E+ ^" D: ^2 z% U    for j in range(0,21,3):: V- B5 d$ K1 l* B  z/ s$ e
        Hour = str(j).zfill(2)
1 n0 G5 C- b7 G3 T1 ~5 @$ z        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
! F; {0 X  q" K. h        print(keys)
+ j, g& r. U1 t2 z        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()! X! N. C; B8 v
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
8 |" P) F. |, f( `. o1 m        driver.implicitly_wait(10)
0 r6 x% @* B* f6 ~8 [2 ]7 q) i  Y        # click to submit
! W/ O( Q( ^2 A5 O9 H; {6 v        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()! v4 ~) ?) P5 k5 w  B' d
        #time.sleep(3)0 j6 Q7 y5 f  E* R0 G9 U( m
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
, T7 C  U6 m' q* V% M0 A  T8 _        time.sleep(10)( h$ w4 ^) K' w. c- \# [/ x
        dir = '/Users/qiujingyi/Downloads/'. l4 e: Z& V8 Y
        oldname = '2012' + '.nc'* h! k4 [, l7 U# e* S% `
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
. |# o8 ^1 P5 [& i  F6 L        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
- q( P" e3 e9 l'''
2 J* l+ D- E) Y* J7 g) }6 X7 M8 o7 S  g: R1 W: e8 q8 s
1 Z) C3 t/ D& O% D9 U+ M4 L
                    / J4 s, |  V7 r4 O; ^
; J. X9 a, w$ Q4 P1 A( G
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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