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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
, L: [3 V8 Y6 W( ~) M" O  y=====================================================================9 a, w/ d2 g9 s
import time; Y9 Z, N1 a/ q/ p' c
import os* v1 ?! N- P9 a* a# v8 @
from selenium import webdriver
% V' N4 W2 @6 ~from selenium.webdriver.support.select import Select
" O) @# c/ M, R# N. Ndriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
2 L8 O5 b! D4 ]7 x6 Ldriver.get('www.52ocean.cn')( ?8 J7 Z4 u* F- `3 V. A
#driver.get('www.52ocean.cn')
3 Y* v/ F. `+ e7 @2 ]% ydriver.implicitly_wait(10)
/ C3 }; p+ r5 Z2 z, `8 u4 ~# click ele
5 q, o/ g% {' [2 ^" ~$ q2 odriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()* q9 b; k7 Z9 P6 {5 u
# click S,T,U,V
; J2 l+ |. }! G% Hdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()! e* H/ z, H9 f1 j2 ?. b
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click(), r) h) P, I1 f; m
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()/ E6 H- Y" I, T+ K: A$ ^8 f' `! s( b
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
) ?1 R/ v. @; J2 t( \driver.implicitly_wait(5)
) N7 `0 [) ]5 V; n* S! H# click Disable horizontal subsetting
& v$ F2 {: u( d$ h- G/ b1 ~# Hdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()/ f+ F& Z) z/ S: I* ^) T
# input lat,lon
1 V7 {3 A) H* H% R1 _driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()! G+ l5 F, R2 F* p4 [/ W( n8 K
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()2 Z6 A% w7 a) C7 B" l+ y( T# r1 G
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
  A# e1 g5 }  q2 |driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()! L. M8 y( G4 m- ~
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()" h' ^+ p% \$ C
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
5 d2 O9 s9 _% x7 e5 [* d- p" L/ Pdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
6 k. b  s( ?+ v+ kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
3 u) c4 @; Y/ w# N3 Fdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')( @4 T8 F+ w: c, W3 x6 K; Z2 z
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
6 D9 H3 ^/ `0 n$ R; U" v1 A- `driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
" z" e% N9 L! V* X# F/ Zdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')& |/ {9 [) }+ l& D$ }/ A
driver.implicitly_wait(1), \6 X; p0 D' W3 B
# click vertical stride3 }( U, |; p; ~% |
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
3 x9 I  q5 A; i1 y. O; ^8 ldriver.implicitly_wait(1)0 @! k+ R; c$ n6 W' J! ^+ z
# click to add lon/lat variables) N9 w, F' @$ h$ [; Q
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
) d/ N4 O9 ^  [* W; i& @# choose output format
- m) q' c* B- l* _& w. Y# ds = driver.find_element_by_name('accept'), q9 o4 T" R/ v
Select(s).select_by_value('netcdf')
" B* g! }+ |: T/ `) [# ~' }# click single time, and input data_time
1 m+ x6 t1 `, y# @# 天
' F9 W: _$ a6 T4 ]1 d1 Xn = 07 s$ s3 g; s4 |9 C
for m in range(3,12+1):       #月份! g9 R% {7 z4 M! R- e
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:" j: v- D# x$ i
        month_num = 31    # 天数
- M0 W, M; s: R7 h    elif m == 4 or m == 6 or m == 9 or m == 11:
# R7 T5 {$ R, q$ H- ^- ?9 `1 N        month_num = 30    # 天数
2 U( V! T+ C' c4 H6 D$ z& p    elif m == 2:
  Q* ^9 o1 G; W* _2 U        month_num == 28    # 天数
# J8 d5 s& a. i) L& Y    month = str(m).zfill(2)
5 q* W3 g  m3 ^! `    for i in range(1, month_num+1):% b: u+ r  s( F! u% b4 Q3 h0 p3 Q8 x
        Day = str(i).zfill(2)! J3 w7 ]; a& X1 ^8 e
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
: H& k. g( Z1 w7 \       print(keys)2 O' l  X* W# _. I6 e  z
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear(), t3 l8 @0 ^1 ]$ f1 d
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
# d% {% u* g' q5 d/ @5 U        driver.implicitly_wait(10)% n1 n( y$ w2 N$ \0 ?( t- B6 }9 _
        # click to submit, m& K" \& a" k1 z8 B
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()  f% g1 N- L2 c3 \* |; ]' [4 b' K
        #time.sleep(3)
( ?' ^' c5 k& A        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
& E9 C  e) V  h  \/ o( g       time.sleep(20)
" h. a7 C# Z( Y        dir = '/Users/qiujingyi/Downloads/'" b3 H3 F1 e* R" m
       oldname = '2011' + '.nc'
. P5 M! u( C4 O# X, K3 @       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'9 Q, E. B. S2 [: H; Z' d3 g+ l
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
1 i4 Y5 [4 r4 G! S'''+ U  D' p4 |) N8 Z( C
# 天+小时5 G$ M7 h: C  S" [& u, l, n
n = 0
* h# D0 {. ^# }( Ffor i in range(1, 31):" t5 x% q+ [* X' C6 M7 k
    Day = str(i).zfill(2)
: ^0 i, v8 g9 J) i3 O3 [    for j in range(0,21,3):
# K  O5 t: Y# l! n5 }0 }) v8 h6 f        Hour = str(j).zfill(2)
- P. L0 X3 B* e- p5 c        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'% Z. c+ V: q- @% H4 V
        print(keys)- ^. J3 ^/ a+ M% F  @% N
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
' o; R/ Y# M% R& `$ L5 B        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
6 \& [' h5 h/ _: y  t# [6 N        driver.implicitly_wait(10)
; F+ P& v# ~6 H: `4 O' t        # click to submit# F, Y( ^+ l- p; @6 M0 C* j1 b5 w
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
: M( ~) |) j" X, g' s% z        #time.sleep(3)) S; P1 f6 L# X2 W
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click(). F- i4 J* ^9 t+ C# T# s; ~! ^- a8 O
        time.sleep(10)) B! \+ X# s- C
        dir = '/Users/qiujingyi/Downloads/'" v1 X9 ?4 W: B' S2 P6 q* s7 r
        oldname = '2012' + '.nc'
7 {- C4 q9 e4 \% x- D        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
! g0 m  ]! W5 s% k: z( u8 l0 u* a        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))1 B7 C# d& u' v9 S9 J+ U7 h9 D
'''5 O' z5 \, |, S8 q

) H1 s/ [3 \# s; S1 J( b8 w
- i& F9 |) i# I" ?) w+ T                      I* J* {7 ~* N) l# H+ z

5 i* x1 J; Y4 R# @                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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