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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
* D) G8 i5 H' z=====================================================================
9 F8 ]! N: ~8 Qimport time
% p) }* D$ \* }( g" T9 L$ T! {* X3 Nimport os3 \( D7 ^% f5 \4 e1 L; B
from selenium import webdriver
2 o6 D. s2 h* P1 e; G. l: Y! I4 Nfrom selenium.webdriver.support.select import Select; N/ L2 H7 l. L7 p7 L
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')- y+ x  f& a6 }& O/ F6 n. U
driver.get('www.52ocean.cn'): C2 g' f( `  D1 V- {
#driver.get('www.52ocean.cn')
& o( h2 r/ P& ^driver.implicitly_wait(10)
# `2 o/ H2 o2 o" b, F9 \# click ele6 F2 N$ x7 n" v* s" D) S6 Q, y
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
$ V( U# @0 C" v( l0 G8 B# click S,T,U,V
: T1 r# J+ J! `+ gdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
/ H% w3 }( |0 K. Kdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
0 [4 W  z) G/ \driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()2 d/ x% x: J$ w3 n0 [
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
, i" a( m$ F: J4 Zdriver.implicitly_wait(5)- R, P. P$ P% C$ p, k2 I* W: `
# click Disable horizontal subsetting
. c0 W$ I9 h( Q4 p. Sdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()$ K# \9 Z1 r+ W) P' i; ~7 l+ l
# input lat,lon9 ^5 j1 N6 Q$ C7 o
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
3 j# F- W% ]$ r& Zdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()7 F* i0 g& A3 x) W; d. T
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')9 Z' g0 s$ Z$ _5 a- |% m4 S+ s
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()& X- D$ \9 w9 Z  c9 R( ~3 p; z
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()1 `, n/ E+ o4 a' `  O! L
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
! I. [& b; w/ C- o: ?& I, |driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
- @2 T, i5 ]# Q7 [0 c. Ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
3 t& U* `% ~+ F  Adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')$ h" s  k" Q; ]6 P5 ~
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()! N5 L. o9 `5 a* g
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()* R% }( U) X% P, n( E, _  n' `
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
; X' o, L$ }  p, z" Ddriver.implicitly_wait(1)
* d! q: J1 U+ h( ]# Z" Y# click vertical stride6 R8 D; q7 f2 n" R" O
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
) _- X) `: h9 l8 Z( \driver.implicitly_wait(1)0 A% |9 F1 U( a; C3 \
# click to add lon/lat variables. T0 Z; u8 b* r4 O8 S  {8 E
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
2 |2 n6 W% d3 v9 M6 O3 C# choose output format
) x' [) q3 P+ r- I% ~8 ss = driver.find_element_by_name('accept')9 n  a: H' A9 H; t
Select(s).select_by_value('netcdf')
3 S2 Q% e/ _4 y( R* ^# click single time, and input data_time
* b, M' k/ k' l# D# 天
! n; v3 b: K+ V9 k0 e( In = 0
8 U* M. U2 |* Q2 d2 nfor m in range(3,12+1):       #月份
- A1 U9 L! F9 k7 g2 ^0 _    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:. z" J+ w2 @+ Z/ ~
        month_num = 31    # 天数
( z- P" {" c) y6 ^: ?    elif m == 4 or m == 6 or m == 9 or m == 11:
" a* H4 ]( ?  d* @( F6 y        month_num = 30    # 天数
+ o* t# P: J  }/ i' o* n# t( U    elif m == 2:
6 F% x% y+ ]9 U" O        month_num == 28    # 天数# V* e: h2 `& T9 z
    month = str(m).zfill(2). J' L3 j8 I7 C2 s8 l
    for i in range(1, month_num+1):& B4 w/ K* {+ P% _- H
        Day = str(i).zfill(2)
9 \, J! t0 J$ v0 o* o7 f+ |0 z9 N- y        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
) N: g. X! I! _5 u0 O4 b       print(keys)
. a$ x* r& [" n# p% K% d5 f5 H        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear(), O8 g: l4 \# G2 A& H, p" X
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
- v$ W2 D5 Y, ~3 c( o- O        driver.implicitly_wait(10)
1 ~, G4 g! M5 n  O: a( U        # click to submit4 S+ \& I7 `$ W  }4 V% }
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()6 k- l( D; E, E* e6 y
        #time.sleep(3), L& h. S% K5 A! R( O, {" R" K
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
( R: K# B4 U7 L: P* v# L% x       time.sleep(20)
/ f" n0 Z% c: S        dir = '/Users/qiujingyi/Downloads/'
$ }$ H8 X3 Z2 L" G9 E) s! }  r       oldname = '2011' + '.nc'
; u- s6 d  B* u% J7 _6 L$ |       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
) a3 ?2 Q9 s( C4 q       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
* `$ p2 W8 @2 Z9 d2 W/ Y''': C+ K- j8 X( |0 `# f. L: t* c& S! {
# 天+小时% R% j6 I9 U) F8 F
n = 0, p5 U  g# r" T( [, U4 d) Z
for i in range(1, 31):0 P; C* {& _  `; X! d
    Day = str(i).zfill(2)% E5 v8 ]0 H1 |7 P: v' J) |2 k6 _
    for j in range(0,21,3):& p0 D+ v9 l+ ?9 I3 j/ q* ~6 L
        Hour = str(j).zfill(2)3 ^% V8 D6 d  X4 V. Z* D; [" C: W
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
4 D+ Z! V5 Z, V& j% |        print(keys)
3 U: q$ L0 d; _% D+ f4 K$ ^        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()' \/ [/ C4 v: `4 F2 u( @- q/ P
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)# Y0 i+ \5 K+ K
        driver.implicitly_wait(10)
: j$ k: B2 I: I" Z; Q        # click to submit" }9 x5 E# g: f& ?9 o
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()8 }3 w3 @. ]' T$ ]3 T* w: N- Q) g
        #time.sleep(3)
2 v9 f6 O" G1 ]9 M9 r        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
& M+ I; {0 d' p6 S        time.sleep(10)
+ C$ i1 i( e! k' X        dir = '/Users/qiujingyi/Downloads/': l7 x" t% X0 s3 w
        oldname = '2012' + '.nc'
# B6 g9 ]6 e  `* z1 o4 m. ~        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'/ r4 C7 {8 X. Q$ V+ x
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))$ S9 |4 d& V: q$ I+ d1 S
'''2 G/ J/ x8 R* k) v3 P  T9 o
" P  k# e8 `4 W% U# R0 z- K
* U9 V  e* u, W  p
                    
8 X& u- n, A$ A6 y6 T- i. o
! l8 f! {& T" u, R7 o                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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