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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
! M4 c* O9 t% m2 ?/ ]=====================================================================" [# Y- T* ?4 r' Y0 K: p. N# p* ^
import time
& ]  J* Q1 e+ Jimport os
. Q& X( W% N2 t. Q6 m5 Ifrom selenium import webdriver  ^5 X7 z* d4 D/ u$ D4 R' T; F
from selenium.webdriver.support.select import Select- n4 i$ T% {- i2 ~' G% }
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
: O* ^5 K/ t, ?0 ddriver.get('www.52ocean.cn')9 A- G: t% c  j6 F6 [* J
#driver.get('www.52ocean.cn')
) x- C, w8 s- `% I  Vdriver.implicitly_wait(10)5 p% d$ k4 A5 Q' s) l
# click ele
4 j  v/ c9 O7 y& C& s/ sdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
& l3 k0 |) l( m' N; a9 K# click S,T,U,V
2 A0 i& h, ^+ I5 R$ @& X3 Mdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()4 u* `* M# K9 o* b7 n3 t$ J3 s
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
6 i. I# A0 \% m6 B4 S- Mdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()  _' h4 X  S  S' |
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()$ W' W) T3 f4 m+ q" x
driver.implicitly_wait(5)
- D  ^, }* d+ P# }* o$ N, \# click Disable horizontal subsetting
: E% L# q- w( Hdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
0 y0 R. x; s, e* s( ?5 o8 O4 o# input lat,lon( ^! p- ~, `3 L3 [0 a
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()1 r( @% I  g2 ?8 @* W
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()! f( V7 M! p( f2 E# G: t
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2'); W* S9 v- s+ {4 A: v
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
$ Q1 C; o" z( C/ x+ N, \driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()/ w0 h$ U' N( B1 X; u! C6 c
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
, {$ F) F$ z8 L8 edriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
$ W  h6 N( U4 X0 Z0 m" l7 Xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear(), l5 F, d0 y6 b4 s$ V- a
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
3 u; ~) e& |9 Y  \5 \. Kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
: _, S# s, Z) Y0 ?! F$ l4 Bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
5 Z/ v4 P. N9 E. @6 \% |# Qdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
5 r3 j" P2 _* c( t; w: p& v" ^- fdriver.implicitly_wait(1)
+ _$ ?) N& X: f; Y- W# click vertical stride4 U  c  R( O8 n" c
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
  O5 }' s! y8 X: Idriver.implicitly_wait(1)2 ?( E$ x* r. A2 Z5 q; P4 G. i' R
# click to add lon/lat variables
+ F7 n0 i: X( Qdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()3 }* P2 W/ [# y
# choose output format
/ ^2 M8 R' @. _s = driver.find_element_by_name('accept')
. e; `: D; v1 o# rSelect(s).select_by_value('netcdf')
) ^" [0 d! i5 M2 V# M( B# click single time, and input data_time
4 G3 I& K$ {5 `* w$ ~# 天
, a' e$ _$ c2 m# k. F+ Cn = 0
/ G0 Z! |: a% x# g: f9 vfor m in range(3,12+1):       #月份3 T: ]5 b' x' t/ R
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:; m! a. j$ H* V1 D- r6 g
        month_num = 31    # 天数
& s) [5 k; k+ i& K3 [" D, M# j    elif m == 4 or m == 6 or m == 9 or m == 11:+ r) J2 f3 ?9 I
        month_num = 30    # 天数# V. @& M" _3 D. ^  x
    elif m == 2:3 e$ E. b) |, ~9 r8 S
        month_num == 28    # 天数9 `( H+ Z( g6 \( l  L! v
    month = str(m).zfill(2)
, O4 V4 k# y4 L3 O, N" d# r6 C    for i in range(1, month_num+1):
4 e( o; S5 J) ]6 r. n+ e2 x        Day = str(i).zfill(2)
& G% ?) y! @1 p% i        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
6 O+ x1 g; J; }% }6 O       print(keys), ~0 j. R  U; l; P. }
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
/ O4 _% B8 |$ \5 f, R        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
1 z1 ~& {* L" N6 p* z7 Y        driver.implicitly_wait(10); W9 g: `* O- v3 L
        # click to submit
6 x: H: l9 {, W) x5 r: r       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
5 K6 A  J4 W( c        #time.sleep(3)5 y2 Z( h; d4 z
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()+ j7 a: ~: u2 S6 ^
       time.sleep(20): a6 p( o. i& O3 `1 M8 l$ _1 V
        dir = '/Users/qiujingyi/Downloads/'
# K. P- L9 J/ }6 ]2 Z) t/ }" {       oldname = '2011' + '.nc'4 A  T; D( i  x* U" x, B
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
7 ?1 i7 E! R9 z: ^$ q       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
9 q5 h7 l8 N* T* b1 s% L$ K'''
9 [4 H0 `+ b' f# h# 天+小时- ]9 w' x; R# D% Y: e0 @$ e1 m
n = 0: w& i( A! Y$ D5 _4 y
for i in range(1, 31):; a) \$ K2 }" U8 Y0 o# @# p
    Day = str(i).zfill(2)
8 G  Z! Y3 \9 {& A    for j in range(0,21,3):/ V( C& g( ?- @* k! e3 Z
        Hour = str(j).zfill(2)
( R: O/ U$ b2 z( Y9 l- W3 ]! L6 h" q        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
+ M* {, Y2 Y2 [4 p2 \  ?3 q. _        print(keys)
. L- v- {: x% R8 u  H) }9 }        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
! q4 `' Z  E8 x. _# k        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)8 ?5 V& k% b% w3 J; Y
        driver.implicitly_wait(10)) Q8 m6 k' V  v; }) I. U
        # click to submit
( A/ d0 v. L0 J9 @0 s8 T# ^# z3 @        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()& U6 w8 q3 l- u; X( m; l  z8 }) W
        #time.sleep(3)
$ v1 R3 `; c/ ?        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
, R$ W- r* `  K& F- [- d( V5 x2 n        time.sleep(10)& m" c* w+ H6 {# M5 N+ Z
        dir = '/Users/qiujingyi/Downloads/'3 T9 M% N4 ]) i4 Z3 \- S" Q% Q$ Y
        oldname = '2012' + '.nc'2 ^; L" ?) m, W5 C3 X4 w3 Q4 ^6 Y
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
( O- y. B6 `" j( [/ k) K  u        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))4 f7 d- ^# O+ R$ y1 @  e8 e
'''' H+ c  c1 k0 z
7 a2 N3 E0 c9 I- z* f

. F2 f1 v* a& k8 _0 |                    1 C. X9 N  F- F' u

( w5 e4 i) C" k                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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