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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
: {7 V; p% I7 E( B0 N# A=====================================================================
5 t, J% F5 z1 k: g! ~( I+ Rimport time! e' n; h: T, F7 M
import os
3 S" W3 D: e* F+ W- ?* _from selenium import webdriver( H: D; C" u8 Q1 T
from selenium.webdriver.support.select import Select% K5 w" f$ ^6 X/ \; q
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
( @) u. M$ q7 g9 ^! q- \% {6 Ddriver.get('www.52ocean.cn'), }4 q. u6 x6 S& @
#driver.get('www.52ocean.cn')* [% p8 J  v; L5 j9 _, s
driver.implicitly_wait(10)
; t2 p7 t; J7 f' P# click ele+ S( g" p: t4 u) b7 a) [
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()+ a; T0 n; h" ~) Z* r
# click S,T,U,V4 d# j1 n- ^% c- N3 E
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
+ [# T; X- \, `$ p1 |driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
2 Y9 s4 ?! }: v3 |9 M& {driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()& W2 I; a1 s  F+ S: |
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click(). ?4 X5 W! W; W* k' r' f
driver.implicitly_wait(5)
# u: U+ x  k1 z7 T! X, ]$ z( J# click Disable horizontal subsetting) v* e2 v) ]: x7 q/ Z; G
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
0 Z) R( s% z" ~/ a- n# input lat,lon+ I6 r% ^* d& W9 `1 v
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
0 N- _- g, s* ~; xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
9 w8 [# v, @. T6 I, ]* X8 Kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2'), s& L* y% N- p+ ]: N* _) C& s
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
8 Q6 H( ^  r9 gdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
8 Q7 A+ c( C' A7 a+ d8 M4 u/ G: Vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
6 H0 A! J9 \6 f1 B" w+ e; t' ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
; J; R. n0 n. @2 h. ^/ ^: o7 \driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
; S7 L6 n1 m/ q9 t1 mdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')2 F4 l% r: c  L" a3 I% y
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
! L* V7 F" ]7 |8 ~5 f* @6 I9 ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
- _) D$ o! O/ r, d: j; g3 h% u. V' Tdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
9 q- f( y( c( ]6 R+ {" w0 I. Ndriver.implicitly_wait(1)
3 N6 D; t9 X6 c* h0 v5 d$ D$ P# click vertical stride
: K* _7 `4 e7 u6 c+ vdriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
; l! U, {6 U. T/ j& b5 {8 H3 ~driver.implicitly_wait(1)
! l0 a8 B) D6 x* E( i1 ^' s# click to add lon/lat variables: n% D  }3 Y9 v  ~/ |
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()0 ]9 G$ f! W$ ?6 K  g5 b6 F3 O
# choose output format  O8 r  v0 _! ^- P
s = driver.find_element_by_name('accept')
' A% \: a% |3 O, j+ KSelect(s).select_by_value('netcdf')
! `  e: W7 l2 ]+ p: e0 L# H% G/ c& `# click single time, and input data_time" I" x5 g% d$ `) w; y- n
# 天+ [4 c; t3 E" Y, d1 }! _" X/ X0 R
n = 0
, s: B4 \. r8 Z0 \: F$ A1 mfor m in range(3,12+1):       #月份
0 V+ t& z! Y3 J* v; t    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
) W1 E7 j) T3 o1 p: y        month_num = 31    # 天数
' {4 I! T; W/ }6 _7 X/ i8 u* _9 n    elif m == 4 or m == 6 or m == 9 or m == 11:0 n. z% V% i. N7 L) R$ `  i) K& f& F. X
        month_num = 30    # 天数0 j* K' C& x% p0 k' ^
    elif m == 2:
  O& \; \- L: A7 F! c- \6 B; M: L* _        month_num == 28    # 天数
. Z/ j$ z& F3 F/ i0 s5 ?5 i    month = str(m).zfill(2)
1 W+ v( K' I  l6 d8 p$ c7 l    for i in range(1, month_num+1):
: Z* U  ^+ `! X& @        Day = str(i).zfill(2)
6 k/ v6 y9 ]7 O" L- R- k- K/ j! \        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期7 f" u" J5 d1 t' N
       print(keys)' k- r; ?  w* H6 E) Q+ A. u
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()0 F* o( r0 {# X$ c% S9 O  F9 J: @
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)/ N5 Z2 F" p) U. H; U
        driver.implicitly_wait(10)* V  K: V& O: U" J/ B0 K
        # click to submit' o5 E  Q- u' Z
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
! C; ^, q0 N2 R; Q        #time.sleep(3)) \2 b  n; O9 z, I! ^
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()9 q% J, Q! M$ b: t% p- p" Q( L2 b
       time.sleep(20): N3 P) X9 g1 V3 G& _
        dir = '/Users/qiujingyi/Downloads/'  G( U7 u0 H2 Y; p
       oldname = '2011' + '.nc'6 q! i; P0 O3 B. N9 R$ n
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'7 r, m3 V/ Q, f8 @, P+ s1 s
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
2 F7 _" C) o8 t! L2 J'''# x( C  \  L% G+ Q6 o* {* e, w5 [
# 天+小时# ~* k5 H- H5 s+ W" H* L
n = 0
: l. \9 b: ^  d- f) @for i in range(1, 31):, W/ |# y5 _. q0 R
    Day = str(i).zfill(2)
. z2 y; G- P. W  e0 y5 x3 T0 }    for j in range(0,21,3):4 }: @, v4 \- c* N1 E4 X
        Hour = str(j).zfill(2)
* R& X1 ]. Q' Y1 z) X) a        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
4 c/ H9 b- _; {1 I4 M+ ^8 X        print(keys)
% `: F: k: z. A; j! \8 ?  N        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()  C! X; x# @8 v* i
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)0 s4 W2 \4 _0 q# [6 x* {6 O) u
        driver.implicitly_wait(10)
# m" e# z$ P6 [1 Z3 X% A; W. Y        # click to submit, u3 j8 W1 U% b) o
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()9 T; d. _2 f' }7 c8 ~; H
        #time.sleep(3)
8 M9 x, I# g. D* x2 |        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()& M$ t& K; _& v  }$ M  I3 U3 k
        time.sleep(10)
( w- X( U4 G1 V( S% v. K6 U8 s        dir = '/Users/qiujingyi/Downloads/'$ B' ]/ O+ }; G1 a* q
        oldname = '2012' + '.nc'
" B2 s2 h: a0 x  u2 x        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
8 L6 p* j( ^3 b. y" Y. U; C3 l        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
. v1 \3 B+ ~( h'''
9 H0 f8 ]/ H% i/ d3 d: R7 X. \' M) U9 j9 w) N

0 e9 b. C2 f( c  D# y# T3 _                    
" r/ ?# K) Z6 Y3 d; N+ O: }0 e
8 \$ m. Y3 a$ Z' A' z                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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