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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
! ?% ?  b; c2 O=====================================================================
2 w* r0 h8 T3 F& yimport time
$ b- J7 r5 F" K5 m# @& mimport os- N# T: _$ H3 X/ W+ M
from selenium import webdriver2 r7 `' ]: ?$ {  B, H
from selenium.webdriver.support.select import Select
" x; x( [5 C8 d, ddriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
5 L: s5 _6 x, p6 b* r! G0 ]8 R8 [driver.get('www.52ocean.cn')
* v' a; x$ ~; W, k' b$ \& P#driver.get('www.52ocean.cn')
' J' l0 b& O+ W( W4 D/ `, h8 j& r8 R: }driver.implicitly_wait(10)2 u6 D, `: W$ _( d8 b9 |# |
# click ele
3 b& h5 O& I1 w7 F; idriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()9 c1 M- c* {6 Y1 Y  y9 |
# click S,T,U,V  P6 D, d: H! z' F8 J2 o. i2 N
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()' q; t* K) i  G: v- B  k
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
) l8 h4 \1 g0 @/ [3 j4 Edriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
( U2 {  `8 s4 [/ U6 j/ N+ Q) Bdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()8 T, Q: V% P1 Z5 ^
driver.implicitly_wait(5)
' X- U) Q6 T  _" C9 o# click Disable horizontal subsetting
4 V0 r3 b, T8 F0 W: f/ jdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
- n5 k' u2 K6 _# a# input lat,lon
1 k* s7 K& T. [$ V) Q3 Ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
6 w" C1 t/ \/ [1 t+ _" qdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
# S. P; \! \4 M! i4 r4 c/ adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
$ X* L/ @/ a. S* ]5 O9 a; C9 R- J6 B0 Idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
! ?/ }# Q* t$ ]: U7 Q8 xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()* A+ e5 l  c  ?/ T2 u3 P/ v
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
2 F. p8 g, u2 |: ~: k. Sdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click(), F, r1 D/ m# L6 b
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()3 \8 F! h  {( ~8 {8 t0 ?# @
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
, o7 P% Z2 |* Y6 h* Sdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()! M4 v- o, {2 I& O
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
* f. j+ o' D$ Q1 Jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
5 Z& k* Q* ?: j1 xdriver.implicitly_wait(1)
2 j9 I, F+ H( d5 n9 n% d. ^  W7 b% s# click vertical stride
& q. S. O* t7 _' n% R" ]driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
" z3 R, k+ x" O% Ddriver.implicitly_wait(1)' L( _8 a( Y7 Z% ^8 i* J& f- ?
# click to add lon/lat variables# F% w0 k" x0 t' }* f4 w0 H5 }
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click(); J* W& G( J+ M. [' ^# t0 X
# choose output format
7 S# [9 A) j+ e+ a( vs = driver.find_element_by_name('accept')
; y3 S$ m' c9 U! U5 p/ bSelect(s).select_by_value('netcdf')0 ?; n# P* k$ }; n, {
# click single time, and input data_time
; ^, {( y7 v9 i/ L- V; u: S# z# 天
& ?* |' u2 K% z. j# Fn = 0
! ^. b* g- [$ b, xfor m in range(3,12+1):       #月份
, e! \6 }7 k! A! }    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
8 ]1 }# U- N6 M* _) `1 k        month_num = 31    # 天数
$ p* \$ K: L# X& X    elif m == 4 or m == 6 or m == 9 or m == 11:
' e, M4 j# d0 X  p6 t9 C        month_num = 30    # 天数
7 {; S0 [& B% S% ~    elif m == 2:$ @  U/ b, O6 [% c' p- r1 B
        month_num == 28    # 天数- p- K; z: P! T& y3 |
    month = str(m).zfill(2)
% `! f& r. r$ R8 H* F: A; z    for i in range(1, month_num+1):1 Z2 u5 G4 R& `% E: D; V% q
        Day = str(i).zfill(2)
9 |- [! U! l* j; a, D        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期/ ~' i1 I4 ?$ P/ s
       print(keys)7 P) V+ G4 {, S4 s( R0 i
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
# j. q, P& h; ]! |  t& B; w        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
% w6 i% p" {& R) f1 h. [3 ^0 q0 e  a        driver.implicitly_wait(10)
6 @& I2 Q' T5 j0 d& n% ^        # click to submit
1 U# }) B0 `( Q0 k       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
: Q8 i' g+ t) i/ e- ?! J        #time.sleep(3)
$ }+ P; J9 t8 X+ |7 R$ V. s        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()1 `4 p" y4 x: x
       time.sleep(20); ?5 Z, s  s& \. ]( R
        dir = '/Users/qiujingyi/Downloads/'. p" p7 t  |" {5 v% l
       oldname = '2011' + '.nc'" U. f9 g% l6 @$ i6 c/ O: L
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
9 }  Q) g0 e' d9 m3 k6 \       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))9 Q/ C3 k/ P% ^$ C5 A9 u" Z& H
'''' j9 H1 I  U  M9 M, ]
# 天+小时6 B4 F: x" I3 D
n = 0
% \) K9 V  J: i0 l5 L5 r3 F, efor i in range(1, 31):. @! i9 T2 K1 N0 P. B$ |
    Day = str(i).zfill(2)* w# K  r+ P  ?, W
    for j in range(0,21,3):; a3 R; P# n0 n9 Q
        Hour = str(j).zfill(2)
/ q0 p9 Y0 d! j( i% z, j& c        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'6 L' H# q8 w/ B1 I/ |" U2 d
        print(keys): Q/ W. C+ R5 A4 m- `( o# n1 h% c
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()4 f2 k8 e/ K% C  m2 [) \
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)  v8 \9 N' L& R1 D6 q7 K& o
        driver.implicitly_wait(10); K+ T* X) O9 V$ v% I, B6 s: Z4 y
        # click to submit
: v/ [& f3 k* h, q4 j8 |        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()' H# C9 U" V# W5 m
        #time.sleep(3)
$ E2 [; N1 y+ h8 |6 C        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
" {  J& Y1 U( `4 v. l& [% T& a        time.sleep(10): m0 ?+ ?; \1 R, y- t# V$ I: h
        dir = '/Users/qiujingyi/Downloads/'
# o$ r2 j- f/ q6 Z; S) F' U) n$ T        oldname = '2012' + '.nc'9 F2 i( g% b0 [( g, v
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'' U- s$ S- R; x. p9 a# r5 i# b
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
' g( i* K2 U% w. |" X' e+ S; o1 U'''4 i. `: D8 a  s8 O& }# ?5 v

0 S6 R6 @  E2 G" f  W  I3 w% T& u  g
3 K4 Y# T! N) U  S+ s                    & i# N% A" w# k- ~
! f# O! p% |& C# N1 a
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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