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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
+ s2 O& W3 C: t- d! J=====================================================================
* w- b+ o& S" f& [! q+ q  }: f! _import time
; [! N& C. k4 {" Simport os* ~4 `( x8 I3 X5 ]- O. L$ Q2 [
from selenium import webdriver
8 e/ j4 r$ J4 W/ X* zfrom selenium.webdriver.support.select import Select6 F/ J% o7 T2 h. D' H
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')4 ^5 T) Z3 Z9 p+ l3 D6 I' j. d! c" y
driver.get('www.52ocean.cn')
* w# ~/ u7 x2 u# ?#driver.get('www.52ocean.cn')
- C2 x3 H1 s, R. x8 A! y. L7 Ydriver.implicitly_wait(10)
, m' {  t% z2 s5 f) [& ~  Z# click ele
5 [) b. S' o3 Vdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()/ k" L. E7 M) A
# click S,T,U,V. C, |. r* f" {2 @9 [2 n
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()! P* Z5 D( D8 Z5 f/ B7 Q  i
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()- c" r- ~2 ^  s8 h! u
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
  E( S' |5 F- S0 n! x& A2 K7 L! bdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()6 l* Y& h# r9 r, M8 p
driver.implicitly_wait(5)% U* |0 i) K+ c/ C
# click Disable horizontal subsetting
! [: G: ^% A) T8 J2 xdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
) j' t; W. B: T& i# input lat,lon! w2 D0 v  T% |/ P" r2 l/ I. \# s
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
$ m* s- M# O4 X+ M" adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
2 P2 w, e- X* v2 t0 ^' m' Wdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
6 b- }* z/ w; h/ u* Xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
2 x( |1 t" i9 i1 l( Jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()6 L1 B; ^1 V" c! C, }; O7 a
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')) B$ ?, m  @# R$ t* S0 t/ M6 T0 ~
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()& P0 K, L' `& C. \1 V
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()% u* J1 O% f, l: |4 u) B2 I
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
! X/ Z1 v' [5 `. }driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
8 B, z3 p' R0 e" ?driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()3 o. N/ P# r; z/ f3 W
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')# a: j/ [  O$ ?& b/ I
driver.implicitly_wait(1)
3 f* i2 q; F% q4 t6 f( N, l) L# click vertical stride4 w4 D" X" `" ^3 _" r. d
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()6 _  W# e# \; j
driver.implicitly_wait(1)
6 M& H' ^9 C& s4 ~" l* m# click to add lon/lat variables
' ]3 e- d: f& O" |/ a; G" ]driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()$ `$ R3 k. v- R. B6 r1 X- w7 H
# choose output format0 ?$ W/ R% V4 x6 L3 E
s = driver.find_element_by_name('accept')
4 Q! ]& t( N& W: t+ HSelect(s).select_by_value('netcdf')# y5 p# B- r; f& o6 G4 P
# click single time, and input data_time
, t( W" x  |7 [( Y# @; Y, p# 天
! y! C$ G6 q) c4 J# Q  y  d% U& yn = 0/ b% R2 G& e; `% Z. }5 @
for m in range(3,12+1):       #月份
' ~0 i% @* \7 Y" K  S0 P' `    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:6 O' z  R* O% A3 m
        month_num = 31    # 天数
9 A  J: y) R1 X& v7 m7 d# }2 D    elif m == 4 or m == 6 or m == 9 or m == 11:# V/ c( m4 K: e- X
        month_num = 30    # 天数4 U; J' e; c4 z% A" u- t- a8 ?5 M
    elif m == 2:
; l2 v/ ^4 {3 n0 x2 s; ]8 G: g; g        month_num == 28    # 天数5 t+ Y, I& s( I  _" V
    month = str(m).zfill(2)) S9 w& D$ Q& A, c# S
    for i in range(1, month_num+1):
5 p; q) i, |; i7 J: y. M/ m7 {3 i" v+ X, d        Day = str(i).zfill(2)
2 F  u: J  \$ g# @        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
9 R6 [3 A3 I3 j, u3 Q- D% C; ]6 h4 b       print(keys)
9 H6 u. {# v7 I8 }& L" ^        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()! F" c, F  z7 E: C
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys). X2 y" C9 {2 z( t$ A
        driver.implicitly_wait(10)9 F  |* D7 u# X1 ^# @" _: V. _
        # click to submit5 P& w+ d& O  [' h2 D
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
' m0 o/ W: K5 w$ g        #time.sleep(3)
0 y2 K, U& U# E& H        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
0 J+ R/ @2 P' ^9 g8 ]5 e       time.sleep(20)
- l+ ^& K# ^" E- H) @        dir = '/Users/qiujingyi/Downloads/'
. N' y* Y1 ]) [+ {8 `       oldname = '2011' + '.nc'
1 S7 z1 d" o! E, z! X% ^       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
% q9 q1 [$ I# e. Y       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))# Z* z! r4 A/ v
'''- Y3 K9 }  y; B, `
# 天+小时: c6 @) h2 _' J/ W$ u
n = 0
4 ^& v; e3 i7 f7 Q! v% T7 y5 \for i in range(1, 31):
$ o' Q. e/ h$ j( C! D( {+ W% G    Day = str(i).zfill(2)) F' T7 E, O: X- o1 [' ?9 X! c
    for j in range(0,21,3):: `; S( C2 |: p" U* E- V; d
        Hour = str(j).zfill(2)
  O0 w' @: R- m5 o9 J" c, ^        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
6 h- x4 {: ?  `* u. B) y        print(keys)
1 j: u2 u# W7 H# K4 T        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()! U: C( [( ]% H7 Q6 u7 W
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)+ u- [, m+ z6 a+ l( Y
        driver.implicitly_wait(10)1 r& _" E/ e& d" B3 R* g( \. J
        # click to submit
: Z* A9 ~: E# {: K        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
8 V. J4 O3 J) ?$ @4 X        #time.sleep(3)
7 w: v2 |- W6 r" U" B, ~        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
0 ^7 H% `, n8 O& \1 ]4 H        time.sleep(10)2 y6 M: n; ^2 f* a9 }% V
        dir = '/Users/qiujingyi/Downloads/'
/ m0 U$ I- T  e6 u3 d* G        oldname = '2012' + '.nc'0 I# M) C( x- [
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'' L/ M, p8 E; G7 {) C# k  v
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))4 [6 c; @+ ]  U! p+ o  m
'''
9 @8 ~* n3 Y2 F. v, Z# X, A& ~$ w5 e  G% c3 @% t; ~

) c1 Y, a" k- o0 O' v                    
$ D' _5 O5 S/ X- `6 [6 g- W6 u) r" E7 D6 e0 S' ]
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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