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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
+ G! W' q3 l1 S% s, M=====================================================================( X2 |# f6 ~: i& e& v
import time9 o# Z$ x0 N( a' p: S0 _6 ?
import os
4 R6 w: u( V; k% s( _- ^/ afrom selenium import webdriver7 P; p4 @% q$ T% P3 F( `" o
from selenium.webdriver.support.select import Select
8 ~1 }3 [+ b! X, ndriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')' K7 G4 c$ h) U
driver.get('www.52ocean.cn')
- g2 s( j- d3 K+ q5 f#driver.get('www.52ocean.cn')
+ I. }3 {5 g4 y7 D# D; D/ d9 }driver.implicitly_wait(10)' {# v; k/ [* f# m4 b
# click ele
0 M, V$ P) Y, M0 Pdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click(); i( c! [" d* a3 G3 Q/ b
# click S,T,U,V
$ @& |0 I) C% v# vdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
7 o; d$ f* N2 l0 F* w, Fdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
' X- `$ A! @9 jdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()7 {' I" k' w' \  k4 _4 Y+ p3 t
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
$ x1 J8 s2 \+ ]7 o* m) Qdriver.implicitly_wait(5)6 r: A7 e% c" ?- O, z/ S3 Y8 K
# click Disable horizontal subsetting
; z9 u" ~. l: D( J1 y! L  Ydriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()2 }  X  _4 L9 O
# input lat,lon; N0 R. c1 G' b5 h2 i+ {
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
, X  y9 C0 c5 g) T: Kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()+ E4 L/ D; v! U- j- \/ a
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
8 B) f/ F. }* H( m- jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
" P0 r! y9 s5 S3 }! f9 n% a& a* Vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()$ \! s5 m1 n  V) A3 B9 p/ `4 D
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
  H$ _; E4 \+ M" k% Z$ l1 E6 Sdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click(): H" G) b2 o  n9 B; x" O/ z
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
/ n6 s+ j$ L9 t2 R, b% b& ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
' w  t9 \+ n  a8 q5 L5 T+ F3 |' \7 ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
9 D; {# U0 i- t8 r( B2 P3 Udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
) w: `8 v/ C+ F8 D4 Udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2'): l3 U; g' U# ^% U- f" g+ p  L  ~
driver.implicitly_wait(1)( u2 R0 S2 T2 \
# click vertical stride6 I4 h' J4 F$ x5 a) Y+ |" z
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
3 d& |6 H5 V0 qdriver.implicitly_wait(1)2 ]: H8 l0 K& Z4 a: P* ^2 R
# click to add lon/lat variables5 C  O+ R! h5 q
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()8 o: [% S" F4 }1 @* o9 T
# choose output format8 X/ Y: l+ H3 t% M
s = driver.find_element_by_name('accept')
. e6 S; p# g) E/ q" JSelect(s).select_by_value('netcdf')% S$ {# \# u. z
# click single time, and input data_time
5 g& l5 u- W/ s# 天2 V$ W! D0 I, `0 R# V9 Y
n = 0+ A1 e1 a$ ^4 w& e2 h1 a1 p  j
for m in range(3,12+1):       #月份) j5 t9 z9 D: B0 B4 q+ N& z( m
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
& x: }: q, h" J7 B3 i( k        month_num = 31    # 天数
, w3 t1 X: G$ x3 D1 l( p$ N3 X    elif m == 4 or m == 6 or m == 9 or m == 11:
! T: T9 f( D# e# B6 t$ C        month_num = 30    # 天数
/ w6 L2 r9 l' _0 G% Q- t    elif m == 2:
7 i# p' g$ ?( r9 I/ o/ N. y: g        month_num == 28    # 天数
% q6 h/ F  c) i: p4 ^4 B- d5 B/ K. F    month = str(m).zfill(2)* g3 Q" z9 d2 j* t9 k3 l. Y
    for i in range(1, month_num+1):2 k  G7 ?8 m0 d- O1 _' D* u" k; m
        Day = str(i).zfill(2)$ Q2 }! M: B8 H% P8 p
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期- T8 Z+ e* [, L) ]; q
       print(keys)
! R% p" v$ c/ s6 c        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
% `8 k( W# B) e% N) I+ J9 v        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
, Y: P2 a: V: s        driver.implicitly_wait(10)8 D/ u9 O0 T% Y/ b
        # click to submit( b, M; A3 m0 s4 p+ A
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()& \9 \" O8 E; l7 [+ S; A
        #time.sleep(3)
9 j1 R+ f6 d& K: b        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
8 A  T( P, l7 g) e       time.sleep(20)% k3 K  s% G/ z5 y4 j
        dir = '/Users/qiujingyi/Downloads/'
  R0 B1 f7 Q- z( z+ P. @       oldname = '2011' + '.nc'
* o! H6 S2 S  D7 b       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'2 ]+ @1 C; q0 Y
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))1 ^$ v$ r. N1 k: v9 d6 w
'''$ q+ N$ H3 E5 m' y- S
# 天+小时
6 J8 u! F  W7 B3 Nn = 0
' [9 B# R6 ]! Kfor i in range(1, 31):+ |$ Z! H. z1 R) D+ i/ h- O7 q# _2 k
    Day = str(i).zfill(2)- d4 k8 u0 X- s  a' I- u1 \+ V3 x, G
    for j in range(0,21,3):
' D2 A6 h& k/ a% G+ A0 D* G' T        Hour = str(j).zfill(2)6 y1 j4 h; d7 S: u' A4 H
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'  b) D; |$ Q1 y* ^# y7 N4 q$ x9 _
        print(keys)
# n( o$ U3 n! e1 r        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()8 x) F5 ^: o9 J
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)7 g6 k- k9 q; M( F3 r% p# A
        driver.implicitly_wait(10)
, F0 k6 a4 q2 H& S* s; h# n        # click to submit! Y+ v) P2 W/ [# m( }& I
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()1 ~3 A- t, }3 i, G' [; e
        #time.sleep(3)
: i5 g+ _- [4 i8 ?+ U" `, q        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
4 w/ D# U* ]! Q  D/ Z+ o        time.sleep(10)
& H8 E' N% C5 U$ E4 \        dir = '/Users/qiujingyi/Downloads/'+ o4 v* A: t( [3 R7 \- b1 q8 r
        oldname = '2012' + '.nc'
7 B3 g; N# M9 T7 I        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'* \  T" S- X: ]. I# z
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
0 Q! \2 s6 R5 t8 ?; e8 a'''+ P- ~$ V. E, ^

! x9 f) K/ N" f, X. A2 \6 T+ G4 H' _
- ~2 t' N& z( b/ p$ Q                    : ~# l% ?- t( L, E% c
" j" S6 n! W5 y1 Q+ C$ i9 _8 R
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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