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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
* h% x  k/ V/ j, k7 C=====================================================================5 e. r! r, \% l
import time& w8 b: c/ n6 A; Y# l
import os7 s: m( b& s, A- G9 B
from selenium import webdriver3 I! g$ X. n4 }$ V: d+ |' }
from selenium.webdriver.support.select import Select
* u  H' p; K; w' d* Ndriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
  k* k* k# w6 h6 A( z# Sdriver.get('www.52ocean.cn')" F0 u0 i! z3 g% y3 m, F; _
#driver.get('www.52ocean.cn')
# p4 d9 h: z3 |' g6 Ldriver.implicitly_wait(10)4 Y: H7 S2 ?1 N; r  U: {2 x, V
# click ele
% H: Q5 x! V1 S+ F1 r$ P/ F$ i& udriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()0 ^5 k6 |1 u% E: ?9 C: M: q7 v7 X9 r4 q
# click S,T,U,V7 Z+ @" e- I, c$ q; ?/ z5 y( z9 Z
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
  J* h8 n1 e6 M( P$ D- ^driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()  s7 h: g# d! C
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()) s0 F! G  B! I- {+ _
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
2 \) ?: j! X. N; x; P! Ndriver.implicitly_wait(5)6 b' }/ V" i" }4 ]
# click Disable horizontal subsetting
2 a6 F* ]' J6 M! K6 G& {, Cdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
" m0 |: \) P, v# j! J# input lat,lon1 h4 G6 K' w2 v  k9 S' K& ?
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
6 h* q: _) f/ Z, a1 udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
+ ^# z6 F' s0 q3 s. w, q8 Jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
* ]# u. {& N8 idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
' m, N8 n( ~+ l1 n; P5 `0 Cdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
; t0 x) W3 D! p. ~1 Ddriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
/ K* w6 x" q* d3 a& L/ zdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()7 U0 [2 [+ i* b  ^/ G
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()! d9 Y* x0 u) x$ j
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
$ o+ ?' B* n8 m8 ]driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click(): o7 t& E! v* d+ C' A* n0 X
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear(): [# |7 M  i8 _6 y) ^  f2 q
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
2 s0 @, D- O4 h5 ~driver.implicitly_wait(1)- B% d% q3 Y4 [* s# e& d. g
# click vertical stride
1 |. h. B1 }( z7 C: j0 s; o% ndriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()6 H8 `; r6 e. u  a# F! [
driver.implicitly_wait(1)
# A& W2 G/ J* y. U2 Z9 y2 G$ @# click to add lon/lat variables6 k2 x/ [9 Y& z* H# [% x' i
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
( h4 p- _9 s* S" f/ h2 C- @2 U# choose output format4 j# B6 }6 |4 M3 B' e* Z, \
s = driver.find_element_by_name('accept')- f: u* J  O3 ?( ?' e# y. e
Select(s).select_by_value('netcdf')0 R; V/ b# a- o9 N1 Y7 B- Z
# click single time, and input data_time
2 a8 f6 p+ y) c8 a# 天
8 _6 @$ I$ Q; F' k9 |* i3 `n = 0
: t! j: |0 o: f9 {/ qfor m in range(3,12+1):       #月份; R% S1 d5 p4 M
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:/ m# X; @' ~( g/ |: v
        month_num = 31    # 天数
- B4 |* J( F$ }( O    elif m == 4 or m == 6 or m == 9 or m == 11:% X) E0 I$ a" V5 G
        month_num = 30    # 天数2 k( D) O- }3 t8 ^5 f( g; D
    elif m == 2:1 [, Z8 ]# N4 W) I8 Z2 ^* ~! L
        month_num == 28    # 天数  n4 c$ S0 h4 z8 C; B
    month = str(m).zfill(2)
( d& \* w( ~) v+ `    for i in range(1, month_num+1):
& |: g+ J7 W& h- Q) c        Day = str(i).zfill(2)9 n: X: b6 a) ^* k
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期5 n3 J% l" G% i  O
       print(keys)6 A' g: b0 e- V- t  q* h7 |
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
+ F: {& [. n: ~. ]        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
8 f2 k5 j! W: D6 n$ C5 O( t( C        driver.implicitly_wait(10)  X8 ]7 s4 `% O+ |- L
        # click to submit
, J: m, e6 t; T- u. W       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()5 Q6 N! x2 P, M% n
        #time.sleep(3)
( f* z( g1 d' X1 e( \4 ?7 n: a: y        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()" c1 t( q" V9 O1 W# p5 R! I% H7 D( r
       time.sleep(20)/ E6 M; R0 c1 S
        dir = '/Users/qiujingyi/Downloads/'
9 q& H7 a$ w/ @- n: @4 y) H( D( l       oldname = '2011' + '.nc'- u: Y9 o* D/ ?' l3 g/ {0 n
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'! H7 w2 \' H8 n2 f( l2 O
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))# p) ~/ `) G6 X2 Y2 J; H# a6 V
'''8 M: R( e5 X  d* E7 Y* \. z
# 天+小时  r2 |3 P' _/ \4 U4 h
n = 0
( v; y- u; O$ g  R0 ifor i in range(1, 31):
& Q9 r9 X" P7 B    Day = str(i).zfill(2)4 m7 l7 M- B+ `0 H% q& b
    for j in range(0,21,3):% O% X7 b) C. U  u! B
        Hour = str(j).zfill(2)3 }9 e- q+ F7 P# f# c) {! |! h; X
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'' q' r/ N6 ?, w) ?4 X8 \% q
        print(keys)
7 U- n. W, V2 x4 f& M        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
% [% F* b2 ?! R$ J" [' r: P        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
! `' }# q7 _7 O7 e        driver.implicitly_wait(10)
. S* [; P7 |1 s+ F" M        # click to submit# i) O) U5 q1 h
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
+ L* j% k# ^. B0 f4 T3 y  I5 ^        #time.sleep(3)( _8 x) ]& ]  \  B
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()4 F/ T  `: r, n. {. D+ ^4 K
        time.sleep(10)
" i+ C5 O" d: h9 ^" G        dir = '/Users/qiujingyi/Downloads/'
9 R6 i! g# s) ^7 P        oldname = '2012' + '.nc'
1 P8 S& `; L) M5 h        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
: z' X; w/ |5 C) t( j        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))' a+ o% ?4 g0 Z: j! K
'''
+ n# a; |  Z  O/ G7 ?2 x$ p5 o2 U8 k) D+ ]0 c" C
/ w5 _7 _: u9 b  Y+ y8 k0 t
                    
! z& W2 w& C+ J  m) T' W& @* v& U
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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