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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
) @# l1 l% {, _=====================================================================( q( O* h8 w6 B) @7 c
import time4 S' ^# B+ P! a( d5 c8 ~4 F
import os
! O. p/ N: L" W, vfrom selenium import webdriver
$ ?% `' b( {1 x6 p8 G0 j- kfrom selenium.webdriver.support.select import Select
' J3 \, N2 c* h+ c4 Jdriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')! m* a' @+ H% C
driver.get('www.52ocean.cn')
7 A+ ]9 p( H/ N) y( E: J#driver.get('www.52ocean.cn')9 E' q( C  |9 I: l3 C+ s
driver.implicitly_wait(10)
/ C! f  f1 u5 \: k8 J# click ele- i+ x+ y& B! |! V3 x
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()$ L" C! }4 T& F- _) E
# click S,T,U,V
' i6 B9 i9 _% r4 |; udriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
5 O( [* [) ?/ W3 Hdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()8 n" n' v6 K8 [" X; f
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
/ ^5 p; R# ]+ L9 V/ [driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
% F: C; k5 u; Adriver.implicitly_wait(5), M" k) h# F" m1 B
# click Disable horizontal subsetting
" @8 P" x0 ~. Udriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
( I1 Z' N9 Q* L- }' u& X) i# input lat,lon  q1 Q0 U% K1 @& j, X% Q; Q
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()/ F! U4 I+ U9 K1 a+ s5 k; e( p
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()6 J& N# [) y1 m8 k
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
! s- c. Y; N3 Y& r( _" C; mdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
2 \: X" X: }/ t- ]7 c3 r' \" Q3 idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()" j; l4 V/ U' Z$ i% [& g9 a# R9 ]# E
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')8 D3 ?# [' x+ _+ E8 E* W0 Y2 q5 @
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
& X3 ^5 Z5 ]( E4 d) V/ ^8 Mdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
! b& w1 b/ _6 a3 @4 Qdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
4 m3 p2 H( H9 y5 p4 ~2 D1 odriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
, y' Y4 d  L9 k2 n0 u" W4 t) t, udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()7 `% k% q$ z4 L* C
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
3 E, y- n+ K5 h8 Zdriver.implicitly_wait(1)9 @5 O& I9 \9 Q
# click vertical stride' X" U; g" {0 p& k6 V) f- N
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()' @" Z: y9 [* i, Z8 d
driver.implicitly_wait(1): x7 `- @6 N: v6 z6 v5 v- ]' G
# click to add lon/lat variables" a7 i: h' E) U2 g4 K
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()5 B8 P. x# L& ~3 E. f( Q
# choose output format
, ?" {% T* w* c6 P$ vs = driver.find_element_by_name('accept')7 h& m5 X3 m* f& R* i
Select(s).select_by_value('netcdf')' D% W& w+ [8 f
# click single time, and input data_time# |  \9 P, Z+ w& c
# 天" T1 ?7 u$ @& U+ F* B0 C0 C+ B+ z# e
n = 0. i: P0 [4 f$ G% W
for m in range(3,12+1):       #月份
- H8 U( P( \, ^$ x% ?; S    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
" s( [  U% a& l8 |        month_num = 31    # 天数
0 @8 V* M- {7 [6 A% ~5 k    elif m == 4 or m == 6 or m == 9 or m == 11:
  Y( O, z8 `3 o        month_num = 30    # 天数
% i; E; o( J. ]: ]3 M" |+ M    elif m == 2:, O  y( t$ {6 N4 w* I; [
        month_num == 28    # 天数
* t  X4 b5 p; b# o# S% g- X    month = str(m).zfill(2)
  B9 M4 S% T5 G; Q! H, t) D    for i in range(1, month_num+1):
/ X6 P. U* g6 s        Day = str(i).zfill(2)
0 c8 k% ?4 Y" ]% O2 B! c+ J3 s        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期$ }9 E7 j0 {+ m7 Y
       print(keys)
! y) l2 q' x, l        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()+ ?% n  I+ @2 b- m6 G$ u' O; H$ k
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
4 V/ D( C4 G* w  J) @. {& `        driver.implicitly_wait(10). f# r8 H" h2 y! O0 a9 g
        # click to submit9 l* k' x! f7 n% \% c0 I
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()9 G& r: S) T0 M( k" e
        #time.sleep(3)
) d% x- }- V5 a) H8 y/ Y" \        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()4 E2 x. `: ]/ A- I9 H
       time.sleep(20)
3 e2 d! ~: M! B# q        dir = '/Users/qiujingyi/Downloads/'
' D7 C9 i' S5 l' k8 m' ~! v       oldname = '2011' + '.nc'  w* t8 P& V, k' b- A% I
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'" ~& {$ T3 C. U5 q/ `8 C$ t8 y
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))) m2 h1 j9 }1 t' K+ D
'''
: U3 v' m: `3 T* G# 天+小时
2 a, C/ H, A+ G" Q2 F0 l( Ln = 08 S6 z. S8 k8 g
for i in range(1, 31):
  L# Y4 C9 ?6 \/ L$ w$ b1 F    Day = str(i).zfill(2)
9 q) g6 S# N: m8 {3 [    for j in range(0,21,3):
4 s1 [2 N, q+ |0 y4 O8 L        Hour = str(j).zfill(2)& L" t+ R1 Y6 Z
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'% Z6 d0 ?  L- ]
        print(keys)) `% F- ^" e$ K6 S
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()0 x2 K- e; y* g; V! m
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)( h- E0 t1 P( G( Y* j1 f5 H% b
        driver.implicitly_wait(10)* |) v) F8 {2 x8 |5 G: g1 x  u; d9 d" q
        # click to submit
! x. `/ @: k( S3 J3 b! T        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
& p; X) G7 P; ?0 Q8 _        #time.sleep(3)5 z- f3 _9 Z3 A5 S
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
* E- |; o8 z. n. H5 G        time.sleep(10)
; j; B' ]$ R4 z1 h        dir = '/Users/qiujingyi/Downloads/'6 f9 E; _# n* t
        oldname = '2012' + '.nc'
2 l, c* G8 {5 p        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'" ~7 ?! M; ^/ j
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
4 b5 J: s& s( v) E. u7 w& M'''
- F/ v- E: q; T; V4 U+ ~  J/ k/ {& Z
, N. C3 y8 @5 p
                    * y' D3 v9 b; f6 Q& b
* \9 f0 X4 ^+ c1 w7 }( Q
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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