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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)1 u+ {: E  x* |# \% y0 D9 z0 K) Y
=====================================================================5 ]2 g3 L$ N$ m7 O
import time. g2 k" G. J9 m6 x0 i/ }
import os
+ w2 H! @8 f2 S4 ]) N6 P# |* `( Mfrom selenium import webdriver
$ Y" t% c) m5 o8 xfrom selenium.webdriver.support.select import Select  M# ~( q! z3 H) q6 j# V0 Q
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
3 E6 C. k0 H6 R, U8 m& Zdriver.get('www.52ocean.cn')! ?6 b& l: A% v* t4 a
#driver.get('www.52ocean.cn')
+ x) t4 p4 W, [' P+ C$ Y; K) `/ _driver.implicitly_wait(10)
% _  n% N; k8 W& x1 T2 X, u9 P# click ele
9 e  m6 ^! U0 q0 Tdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()9 f1 P# h+ k6 ]& N7 j( {( y
# click S,T,U,V. p. f: G. g: c4 e. z: U: v
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
( A2 U- E7 o( r* h( a# _1 Zdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()3 W7 C6 D8 k! ^2 `+ [2 q7 D! R
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()  C3 b2 Z9 y: v6 h' _
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
  {5 j' i  v& z8 G# C8 Ldriver.implicitly_wait(5)4 o$ H; J* X: l# T  w3 c2 o
# click Disable horizontal subsetting6 \$ i4 _+ A( s/ j* d$ G
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
5 S6 f4 K: V$ ~  B7 G5 N# input lat,lon
6 g0 z; [9 c# S. k! Gdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
4 @2 u2 ~5 y) f( l% X; Xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()4 t+ H& [' r# r, h. L
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')0 A* o  r0 m% [  `7 l
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
7 _" S2 A4 Y& M. e9 q+ qdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()' J/ m$ V  s- X
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')3 T9 d" }- k: V- [" u0 e
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
/ [+ K8 k1 T+ n. o' }2 |9 ~driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
+ L, Y1 A! N0 t; U- bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94'). @4 x- L' ~1 U5 r7 {
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()- D; _- @! z5 z3 s
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
) r# z5 _/ G" J! O. L1 Vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')$ i8 N6 i0 ^5 t9 s$ z4 E+ ?/ O
driver.implicitly_wait(1)" R3 C* x" F; d8 l2 D
# click vertical stride* ~( c1 ^2 i& \& [. |! V; s0 J
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
+ _, v# l. \3 a& D5 Qdriver.implicitly_wait(1)6 L" H+ B1 O. y) z$ V( P( F$ [
# click to add lon/lat variables, M8 I; i( d' ]7 R
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()# ]) g! `" m. P( ~* d- p6 S
# choose output format0 z( n; U+ f: K5 `3 h% ~# I
s = driver.find_element_by_name('accept')3 X0 M! W3 p2 B  t0 S  E
Select(s).select_by_value('netcdf')
" [, b9 N: c6 D6 P8 g+ M8 _# click single time, and input data_time! S8 v' O, K3 s& R
# 天
/ ^# \2 u0 g" i1 r! _8 f4 dn = 0
2 ?# a6 j3 V3 ~- l. {# j  x! Jfor m in range(3,12+1):       #月份# q" g1 {6 Y7 U  b  e( r2 k) e
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
- O+ |+ q6 |- f2 h  ?3 n        month_num = 31    # 天数* j* L8 `& b; k( ~# J# G, |* A7 O
    elif m == 4 or m == 6 or m == 9 or m == 11:
; {0 m9 F. `! H        month_num = 30    # 天数
0 i) X/ _  O$ j* }    elif m == 2:" E2 s3 P& h$ |, q! x
        month_num == 28    # 天数
) }( v7 Z" \' n: b    month = str(m).zfill(2)
* Y8 p5 q/ P# R9 r; i  K    for i in range(1, month_num+1):
; l3 x4 p5 l8 O) ?5 V) Q        Day = str(i).zfill(2)
' M; H, y0 c% |/ C0 x5 u        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期7 z/ E4 F+ @, ?
       print(keys)
' @+ ?$ L- m& u/ m! e        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
2 n, [) W, }6 P' K        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)7 o( g, J1 M% j/ l$ p" W4 f
        driver.implicitly_wait(10)# R% ^5 e. \7 n
        # click to submit
5 H* N" H$ b# S: h' {% A1 d8 R       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
1 r* j+ Q. W/ S; y) C        #time.sleep(3)7 `  J6 i" [. y" L. b9 h( t) [. \
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
& e+ G4 P% K: R& o  E$ L* `+ |       time.sleep(20)
$ b6 q9 O7 F& t  t% j        dir = '/Users/qiujingyi/Downloads/'" T" o* E$ `+ |/ D' Q3 v5 @
       oldname = '2011' + '.nc'9 _( R  M) Q( h% R) y
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc') x/ v4 J8 I, ]5 A2 g1 R, k" f8 Y
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
- S" r: q, d5 R2 W1 D: P1 o" g'''; V8 x! R0 W9 E6 k* q9 i
# 天+小时
3 O3 z1 `# u) O  gn = 0
6 g6 p/ i" N5 n8 F; y8 W6 m% _for i in range(1, 31):7 W; e, c; N4 T% e) ?( f
    Day = str(i).zfill(2)/ Y- V$ p- i8 m) }! l( J
    for j in range(0,21,3):
& n* p6 H# x1 N9 Y        Hour = str(j).zfill(2)3 S# }: W: k& G' K, [. X6 u  [
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'! g( f+ ^. W6 @6 q/ d7 b
        print(keys)9 j& K5 m$ L7 ?* R: r( J& g1 N
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
$ k0 }% ]* K- X+ V1 w. O        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
( G5 _& m; l' m" Z0 I        driver.implicitly_wait(10)) M% j* u2 f) C
        # click to submit4 p4 x% }+ P# q" t
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()  T. `8 y. C! R. c7 s
        #time.sleep(3), g; ]5 ?) ~7 h) e
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
1 e# B0 e" e1 [) o5 L5 t# N* K: V        time.sleep(10)9 c; v5 C2 E/ {8 F
        dir = '/Users/qiujingyi/Downloads/'# e- ?5 Q8 t0 o
        oldname = '2012' + '.nc'  [* C9 n. v8 @; }- l. S8 e
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
) V4 w7 Q9 l0 G# f        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))6 K! c7 U8 H3 e, Y. j
''', v+ i( d- w: ~6 b
. ^' |% e) E) `" s5 ]2 s3 D3 l+ ^

3 {( o4 {5 @$ f                    
. D4 @% K& c  s4 f
  I7 w* w& a: \* M9 P                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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