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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!); O" ^9 z$ Y( k: b& Z3 N! I6 Y
=====================================================================1 N$ _# u# N2 U
import time
+ m2 ]1 M: s* W% v6 R( Z# Wimport os4 p) c  A! Z+ Y6 J7 Z4 \. }
from selenium import webdriver6 y) [! [; ]8 z0 V( Q0 n& |/ e7 Y# R
from selenium.webdriver.support.select import Select, y  I- H: W. O0 k; O
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
7 l- R1 `7 Z. l* Ldriver.get('www.52ocean.cn')
* w6 A* S: [# g$ h1 g, R#driver.get('www.52ocean.cn')
6 a! T3 P0 G" k2 D) Fdriver.implicitly_wait(10)
- f/ X, E' h# l7 S* C  r# click ele- F  {; M2 I1 k$ m' D
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()9 r% }3 \$ c& y7 P7 p
# click S,T,U,V
( x; V( ?/ W0 wdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()% T- i/ M( C2 _$ A% V
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()4 X4 T6 Y, _# `0 w( q3 S
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
0 |, N% E7 z0 j( o  X/ y8 bdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()% C2 k8 p: Q4 ~' l0 G/ B6 \5 V3 c- _6 }
driver.implicitly_wait(5)% q( i9 }& |  W- X) G7 a
# click Disable horizontal subsetting
7 Z" u, Q2 u( ~1 ~& ?driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
( A2 ?  p  V/ `; t# input lat,lon3 t$ K& h+ o5 u1 x. G0 I
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
3 F* C. S' c8 p+ v' o0 [9 P6 idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()1 V+ }( i; {7 Z
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')+ v- ^8 Y: w1 h7 H! V* j% V
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
+ i! ]. d& F! V% ?( ]5 |/ Idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()9 B/ R8 Y9 ^, Z1 K: t7 T0 t7 b6 ]' i
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')7 O# C* l( E/ L+ y4 U
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click(). k: {) W$ V* x% t7 N! Y
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()2 b% m) H0 q# `- k" I+ ?8 v  N
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')5 S+ I# h8 X* Q# K* T% ?! L
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
# o4 G0 A% D3 [6 Q! h) `driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
7 X5 q( D: w# t- j& p; h5 @driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')6 L( T5 s4 t, a' i: o5 p. b
driver.implicitly_wait(1)
" P) j0 Z2 ?5 w& m8 A# click vertical stride
4 A; k0 f& _$ t; @- X1 rdriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()) n4 q& r5 _  w% D. j7 v
driver.implicitly_wait(1)3 y' ^4 n' u  N* ]1 c$ D9 r
# click to add lon/lat variables9 v* o- k! x, @! ?0 F! J
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()! I" `, I9 T& N- F! g, J  W9 p1 ~
# choose output format5 U: ]; ^9 n4 g8 L, c: [4 `
s = driver.find_element_by_name('accept')0 O1 {2 n* ], N  }6 C+ K
Select(s).select_by_value('netcdf')
) D  M. v9 Z+ r* ^0 q# click single time, and input data_time3 p1 b7 K! j, w( J. ]6 J" z2 ^
# 天0 k9 ]1 q8 ~- H# X- h5 n
n = 0/ J/ b- I& a* ~# G; Y2 p3 D0 J$ `. m. ]
for m in range(3,12+1):       #月份
: `( [* Q+ J/ [1 S' y    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:9 z2 d$ U" i9 R$ F
        month_num = 31    # 天数( d4 ^7 c! M+ G8 @7 U
    elif m == 4 or m == 6 or m == 9 or m == 11:
* D; C" ~/ k- ^& @  U9 r5 C4 X        month_num = 30    # 天数. I* L+ }! C6 T! ]
    elif m == 2:
6 q4 V8 {+ y6 r        month_num == 28    # 天数+ G9 o2 f, R( L
    month = str(m).zfill(2)
7 J3 O4 E: o4 W) K+ z; f2 [  k    for i in range(1, month_num+1):
* ~1 z. I4 Q4 N( w0 X) x9 }' r6 e        Day = str(i).zfill(2)0 P+ {# ]2 b1 s+ ]1 ^; v( t
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期" a# S5 {7 D- G" g2 n- i$ }
       print(keys)
0 K/ S  _& F# x3 l/ y        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
. k4 x! t! R5 G        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
! c5 ^1 r1 I' I8 m# C- A9 k% c% ~0 c        driver.implicitly_wait(10)
* ]: `/ P4 j: f        # click to submit
6 q1 a7 s0 l5 I+ C# o# D6 V4 N$ O       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
5 a2 C5 x; H6 s1 ~        #time.sleep(3)* o8 I- u/ E" L9 `. e. o
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
: b6 d, Q  G$ F8 R; a' H       time.sleep(20)5 M. _' L9 F7 ?' I, j( I7 Z
        dir = '/Users/qiujingyi/Downloads/'
8 B) v' \) w6 @# w' t       oldname = '2011' + '.nc'
  d: h* g/ C$ [7 u- Y) @9 p9 r/ {       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
: y- \( Q/ z% G, \! X, h       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))7 s+ Y6 A3 t. y! S% `* m. u2 Z
'''7 {' ?6 K  D! E7 \& a9 `0 G
# 天+小时' n3 w' I4 F% x+ c" h
n = 0( l/ a- q3 @& d+ a! p3 u  R
for i in range(1, 31):  A# ?- x1 b; P6 G% z" @8 ^
    Day = str(i).zfill(2)) V, s5 H2 a4 M! u* F4 ]
    for j in range(0,21,3):
! x. c7 z' ]* A7 Q% `/ z        Hour = str(j).zfill(2)
1 B' [$ F! u7 l2 N% ]4 D        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
" F# f4 o8 }! f5 r' W$ v        print(keys)9 U# ?/ G6 L! H
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
- Q+ f$ B  B* ?* ~0 T& C5 H9 O        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
" M$ x: I8 o, |* M- J        driver.implicitly_wait(10)
& i' C. V7 n0 c- W' L        # click to submit+ k+ ^! A8 L7 b, @  I0 u
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
* ]" Q5 g3 A4 Y9 f- [! M# K        #time.sleep(3)- W( g6 a) r$ B" M- T9 ]: ^5 h4 \
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
7 A  r7 G; z5 l- q% P+ o        time.sleep(10)- y1 v- t3 m' I, S! b
        dir = '/Users/qiujingyi/Downloads/'
+ C$ j( i0 D: X0 H        oldname = '2012' + '.nc'
4 g  r' z$ t+ X# ?/ F! M        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
$ |: p5 Y* ?+ ^6 f        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))( Q3 J, u7 ]. n6 U
'''
$ f. ?4 l+ K  [! d9 J* M" k8 @5 [& _* }" j& g( s1 L. I# p

- `/ i8 P/ G$ J2 f                    * n) {. \; Q" w' ]* c; i
. I: E% g0 e) i" ?
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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