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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)6 h/ v0 `3 I6 t$ h$ x. E
=====================================================================2 q. ~7 @4 d; X8 h# C! X: c% B5 G7 C
import time
6 z- P+ I" ^) f# Oimport os$ \1 Q3 a8 g% O
from selenium import webdriver- \# o! \! M$ b% D
from selenium.webdriver.support.select import Select
$ S% P- e! G) O2 Ydriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')4 X8 f5 ^# Z# }7 x, m3 A% \$ X7 l
driver.get('www.52ocean.cn')
+ g* M( f3 E1 n# R4 C2 v( j#driver.get('www.52ocean.cn')$ C+ X8 a$ ~* m8 W- N( G
driver.implicitly_wait(10)
; s" P6 f8 a2 N; J7 z- x# click ele, ~1 B, V2 C& e& |/ F8 o
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()8 T) W- V- n+ F+ F+ m
# click S,T,U,V4 V# g# l3 Y) f  v" ~" j
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()& i$ c$ |/ Q! A6 i
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
* l4 Z' c) a7 \; {driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()* S1 _/ @! Q; U% u0 O
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
( G+ b& ?& z' n; F' H: jdriver.implicitly_wait(5)2 F3 O3 }  d  C0 \- L
# click Disable horizontal subsetting) j: v; ]" `& h' }
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
, \6 |# A6 D0 Q- e! E9 x& ?# input lat,lon
! y1 O) o! C- q# P5 g- Adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
- v+ P8 V. c+ D! h, Y4 e$ {driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
* W2 q" d. m6 s1 v" Ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2'); @4 f0 x3 w5 e; X) X" \# T
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()( W5 L" h  f4 s0 }% G
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()  s, b+ R- [1 u  G# P
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')- B- E- c( p9 I& z3 J8 S
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()) |* D+ ^# O- b7 J7 c
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
" S5 h  j4 W- g& G6 k, \! D3 kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
8 C, k8 ]# x7 Edriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()1 s! G7 Y% A, _
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
8 @) n$ e0 Y% s3 y8 E8 s  y4 adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')& V  h! D9 o; l9 ]
driver.implicitly_wait(1)" m  X/ {( i9 V6 e/ ~( g# r
# click vertical stride
2 f' p* ?- D6 d  |driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()8 O; c0 C; o/ _/ R6 R" ?
driver.implicitly_wait(1)
2 v# Z1 |, I+ H! v0 G# click to add lon/lat variables( j, {* y4 b2 R' C3 u
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()+ b, h. z. d8 q, i, X
# choose output format
: X; r. k: Y% b4 N5 ?5 L+ Os = driver.find_element_by_name('accept')* m  F! N7 [1 A' Z0 Y+ {, J
Select(s).select_by_value('netcdf')( ]8 Z0 Y$ J7 H( p
# click single time, and input data_time
) x, B6 y% V1 m, L# 天* i6 a2 R: Z9 T) ^9 C
n = 0; T. E6 Q! Z& Y( e8 f5 N
for m in range(3,12+1):       #月份( D! G9 j/ j) A* Z4 p
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
3 f3 v& h% O4 L' ]8 j        month_num = 31    # 天数1 s5 n/ L3 @) v
    elif m == 4 or m == 6 or m == 9 or m == 11:
& x/ \' v8 t/ b* G        month_num = 30    # 天数& Y- w% A5 @; |6 }3 M& s# s# w% k% L3 Y1 F
    elif m == 2:  K* {3 ^' t3 c; S
        month_num == 28    # 天数( T7 n. D5 f1 Y. W% y$ ?. B2 E: X
    month = str(m).zfill(2)9 U: |4 B/ U  V
    for i in range(1, month_num+1):
* @6 h) E% B5 _/ N2 l        Day = str(i).zfill(2)9 t$ j" B' _( l; Q
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
# o; j8 b/ L3 M       print(keys): e0 ?1 K3 D* M& Q* Z
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
2 \: _8 _) @3 P) |! M0 l$ s        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)& |, U& h8 p% B' R* [1 E
        driver.implicitly_wait(10). A$ o3 k8 }2 Z' t* r: u' o' P
        # click to submit
# w2 {" O  m, ^       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
& L: X8 P& H. A5 Y! z# t        #time.sleep(3)2 D: |7 X0 a3 z! J
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()  N, S6 y# L$ ^0 g3 l& F" S6 J
       time.sleep(20)/ N0 A6 P" ?% M( t% h/ K
        dir = '/Users/qiujingyi/Downloads/'9 d4 i, d  T& H  g0 D! Z4 N
       oldname = '2011' + '.nc', T6 m, M% u8 m5 f
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
5 N% O% g4 Y& c2 D/ E+ S( B       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
: h( R* ^7 e. p2 ^9 G7 N& L'''8 N/ [" \/ h4 Q9 k6 k0 M9 k+ @. ~
# 天+小时5 M4 J6 n7 y8 A4 j; `  a4 ?
n = 0- Y5 q2 Z) M0 T
for i in range(1, 31):
2 k1 H, U1 V8 q; t7 u    Day = str(i).zfill(2)! A1 D. q* L5 ~  x
    for j in range(0,21,3):
9 u9 H! q5 S7 c' f" }( R        Hour = str(j).zfill(2)
5 @1 _6 T, g; u; n        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
; g1 R& S& Z8 m        print(keys)
4 {" X, x* c6 O/ b        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()5 c$ L& ~3 u' Z& J1 [5 `
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
; t1 t3 b3 L+ g% @( k        driver.implicitly_wait(10)3 x6 J# x% t) K! n7 N3 x! R# s0 a6 F
        # click to submit4 M+ F( o* j% G1 O' _
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
' ~! @  `1 J+ _  X1 V6 O        #time.sleep(3)
8 u  i6 b& A, \9 j! P        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()- j- Q6 u, J5 d( D2 z3 ]
        time.sleep(10)
  ]; _- g5 `. l; C/ Y" s  c        dir = '/Users/qiujingyi/Downloads/'
. I* _  N; U/ z3 |' Y        oldname = '2012' + '.nc'
! j2 G! v4 s' j' i+ m        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
3 t! i* o1 p, v) V        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
: Q. E% \& `1 S1 |2 i'''
( |$ h1 J% v, ~  h% r5 [& {
) s. V% V+ r$ H1 c9 ~
' @7 `2 w2 O0 N" }! }. C                    
, c' B; B$ l; l' K: |
+ w; x! Y' V; K- |3 |                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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