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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)% Q7 {  M/ b3 }
=====================================================================
9 N; G/ K" D" l6 G, \import time
2 Q! E+ i, e( n# |# z$ r2 d1 _import os* {. L) I# n8 |8 Y$ N
from selenium import webdriver1 F, K" r7 s8 z6 N
from selenium.webdriver.support.select import Select) j0 m  q' \# q2 N2 F% v
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
; R$ Q; ], I, Xdriver.get('www.52ocean.cn')
! c/ ^" l9 G* G- I0 c  {) t( F#driver.get('www.52ocean.cn')
# R- X/ N) z/ K7 f8 E% E; `driver.implicitly_wait(10)' t# \$ ?; @+ h( Z
# click ele
  u- m3 v( I0 j7 H/ ]driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()5 R9 h5 t. W4 u; ?8 e* c8 q1 V4 m4 {
# click S,T,U,V
+ P7 P3 ~7 ?, Ldriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()- O( c: \+ I9 b3 O
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
. ~# [2 y. a3 ~! rdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()8 v/ I* F* u; o0 y9 M
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
+ ]+ k3 b9 A0 B5 vdriver.implicitly_wait(5)
+ q( T; x! {% h# click Disable horizontal subsetting! J9 k% _' t  N/ i" n1 ~& \
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()! I- V2 S& X5 K1 g; ]
# input lat,lon% w( n1 J9 s* M- @$ J7 w
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
4 y& H6 B7 Q3 Zdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
, d2 L( T  V6 L5 \driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
( A5 e& J5 C0 ?8 A$ Idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
  S* S9 M+ K( K' _2 i5 o$ ]1 _driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear(): e: v' Y& d  u4 f4 d/ z, C5 c
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')! R4 Z; u( ]$ C& M% U4 P
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click(): Q! \9 y2 E  |& a$ D. x; n
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()0 y; s" h2 H0 C% {- c1 r
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
$ A7 Y) ]) D! u+ p; G4 sdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
/ Y  Y; V! F: L0 l2 o( Pdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()- M& R( V# K' R9 i/ l
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
1 Q" g1 n1 Z6 P; B$ rdriver.implicitly_wait(1)/ N' z. H" }# v, O* h1 ~  }! w
# click vertical stride& B# j$ g/ c4 b! u2 A' [
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
3 i3 z- ~5 ~/ t% P# O: S. v/ M6 |+ Kdriver.implicitly_wait(1)
8 Y$ ]5 F( n$ L6 y0 b# click to add lon/lat variables
7 t1 A5 O5 ^) K: Udriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
- a0 G. W0 r! ?2 F: ]/ G" e) |' J# choose output format
4 n4 N* J( q5 x- ?1 fs = driver.find_element_by_name('accept')( Z4 v, z9 _7 e( ]) O$ V. p
Select(s).select_by_value('netcdf')
( t- U: ]/ _; L0 n# X1 H. v# click single time, and input data_time# d$ k$ |$ i% Z, j4 t# z# U) [& V
# 天
* [0 X& {  D' w3 Nn = 0
8 o5 s) Y+ G+ A: E4 kfor m in range(3,12+1):       #月份
0 I$ {  a/ y& M3 y6 \! l1 }    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
; f( E* o9 _- F4 a        month_num = 31    # 天数
0 v- B. T! N- O4 T4 z    elif m == 4 or m == 6 or m == 9 or m == 11:$ N6 N  ?3 k' y; k$ v
        month_num = 30    # 天数
8 S1 N1 M  Q0 X: V4 L$ q2 Y! U    elif m == 2:( W0 s: z+ |: f! a+ ~
        month_num == 28    # 天数3 k6 f$ @; H$ J* A* r
    month = str(m).zfill(2)
, R% |; e/ r1 H& \    for i in range(1, month_num+1):3 ^8 n( ]' ^2 R9 u) q+ Q
        Day = str(i).zfill(2)7 x7 g# e% [0 j" H% B' I: h& i
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期: T, ^8 l/ A% O3 u  R4 V/ ^
       print(keys)
% k$ M4 e" A8 Z( [1 s        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
7 b3 u: e' C4 J6 i$ W. @7 K        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)6 h6 @- S6 L. s) J' B+ s% }6 L
        driver.implicitly_wait(10)6 w# L0 J7 P2 g* J( {& G& @- Y
        # click to submit
* Q0 ?% G( @- E/ G# z       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
  N5 q7 N. d0 M        #time.sleep(3): L- y) r; y* F9 |6 I' t
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
* ?2 H) B  D# D/ w7 K9 h       time.sleep(20)
' ?& U( \3 X: Z+ L        dir = '/Users/qiujingyi/Downloads/'
. k# [/ z" J( m: b6 n2 D       oldname = '2011' + '.nc'" B  w& L8 A1 g6 ]* r/ Z( f1 _; N
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
4 ~0 Z; c5 G+ g$ W% ]$ A( [9 _       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))! R# C" p% w5 _7 r. M
'''  s& d( f+ a; \6 M4 O/ D& l
# 天+小时
6 U& K7 d8 K/ Fn = 0
0 ^' \* N: U! r: e3 b* ^for i in range(1, 31):4 s! |# y4 e4 f& V) N1 @. z
    Day = str(i).zfill(2)
  H% U- v. I+ k+ P+ f( ]9 z    for j in range(0,21,3):
9 l- |; F% f0 g8 W5 c" u7 J        Hour = str(j).zfill(2)! V3 a" C. `7 P, s" v
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'! ~# j, c0 z% l8 Q: e! G- R! b2 @  b
        print(keys)" c0 d+ r* l8 ]$ k2 Z, G
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
' Y  u1 T& ^0 S4 \, K/ }2 J* ?4 r4 L        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
! `4 v! J9 G" o7 Z1 w. ^7 ?' J        driver.implicitly_wait(10)9 @2 t! A" b! \8 V8 V
        # click to submit
/ v* I% U+ w3 ?1 y/ f5 \        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()$ _+ x/ P. m' E; [: p+ i
        #time.sleep(3)$ x% v- r* F8 n* l4 v
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click(); S  Z: A* k( v$ m
        time.sleep(10). e8 t- W+ P+ G9 d7 J$ E
        dir = '/Users/qiujingyi/Downloads/'; o) L; ]; f$ y' H0 ?8 u
        oldname = '2012' + '.nc'
5 I( l! j# ?( `  T) o1 k8 L        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'6 U) T" \2 H" q1 A# `
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))2 I9 p; X* X9 @* D- \+ b
'''6 r+ w) m! P0 r% h

( A5 v. T, i6 w. Y* F8 ?+ n0 G
  s) N0 G$ u" q                    6 X1 r  N4 H5 D$ E$ G" d* w

# ~/ C% g! s4 u4 d                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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