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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)
& j0 W) f, z; X8 y=====================================================================
0 N3 N, a6 ]1 ]' W. ?! N4 I2 P, \) nimport time
0 W4 o- p; Q0 F% s' A- @4 qimport os& \& B1 {( A  h: o& Z- C
from selenium import webdriver" D' h$ ?" Y+ n; n& t0 ]8 m
from selenium.webdriver.support.select import Select
; W- I; H6 Z2 A5 u+ vdriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')1 `6 A' u! r! e, ^* `( R
driver.get('www.52ocean.cn')- a& Y- J  l7 x4 i5 x' B; T2 `
#driver.get('www.52ocean.cn')! F9 e. Q+ I& N$ ]8 t- q
driver.implicitly_wait(10)
& S( H8 C+ A6 \0 n, {7 J1 j# click ele
9 e4 A; j" k1 ?/ ^driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click(): X( R, b: ~+ V4 U
# click S,T,U,V& ^! \- i% `# O7 m) q6 u% B2 @
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
) G2 m4 O0 a8 g3 G9 {! R# kdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
; n5 G9 H, ^" ndriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()0 V( m; B2 g9 U% D
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
9 l4 U! w  ^( o: Adriver.implicitly_wait(5)! z) Q& t* H5 }% z
# click Disable horizontal subsetting6 `. e9 f0 T1 U& N
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
6 q/ z% H5 g3 N* H$ F# input lat,lon5 p* N* i% D  J9 e
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
4 C: Z  |# Z5 S; Bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
: \$ {  B, z' j) A, Zdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')" Y  o' h2 W' S+ o1 K+ {8 H
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click(). q1 R+ b9 g; o( [5 L
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
' i1 ^; F0 T  @- \, I( L' ]driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')' l+ ^4 ?/ ]: b
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
! C  ~* {  q% y0 `5 H" n! r; tdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()* w$ b$ D8 W7 f" m; H
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
6 X9 V% Z& H$ d5 V! U" `driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
6 D3 h5 T4 @- v" U7 jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
, ~, p  L  F) C$ s. U  a( ]driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')' T) V5 V4 J+ [: I' A8 S% T
driver.implicitly_wait(1)
  D- k# D; t! Y, \# click vertical stride9 U: K! n6 |7 s+ J1 N7 d
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
; R) n. T7 e2 Q2 mdriver.implicitly_wait(1)
1 \7 p; k7 N6 {# click to add lon/lat variables
/ A& s+ N. p' H* `& l) Ndriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()0 Q/ T, r' S* ?# I/ u4 R
# choose output format
7 ^( p7 W; A8 i0 hs = driver.find_element_by_name('accept'). M; d: f! A6 R3 f2 ]  e! A7 @
Select(s).select_by_value('netcdf')& x# G2 [( |0 B, q' F
# click single time, and input data_time
2 S7 u0 o* {" b+ t. q$ a# h) [: v# 天  q7 Q  ~, h, X2 }: E! ^) j
n = 08 s- @3 i5 {4 s
for m in range(3,12+1):       #月份
. \- H. z0 \! L. G/ D# ?2 O    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:+ V: n; D  Y- @
        month_num = 31    # 天数
% {6 O+ D+ G, @9 l" b. t0 ]    elif m == 4 or m == 6 or m == 9 or m == 11:7 z$ H$ y1 m0 _
        month_num = 30    # 天数
' W5 y5 ]* J* p! k8 J( N    elif m == 2:
7 Q4 K. t* ~/ ?" z' y% [        month_num == 28    # 天数4 U7 f# k; c; z2 _9 e3 ]' B9 [
    month = str(m).zfill(2); ^% e- e2 {: ~5 F
    for i in range(1, month_num+1):( ?1 r+ L6 O* c. C
        Day = str(i).zfill(2)
' U0 X( i2 B3 ~2 f        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期% |3 `; W; J# H! ?$ x5 a
       print(keys)
/ e% s* \) w  n: V  X1 z        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()3 c" z5 _+ e( P
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)3 G; X! M, v) R0 M
        driver.implicitly_wait(10)
& |# D# c2 r2 k: x9 C2 E        # click to submit+ i6 S  p" [% _; a& b
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
' l+ q$ T  Q/ {, o" m% F, W        #time.sleep(3)! v) q- y) s4 _- j# ^
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click(); q; Y1 u- y( D, ~
       time.sleep(20)
: o2 c6 c# c& a2 z        dir = '/Users/qiujingyi/Downloads/'
# F# H2 z$ o; C       oldname = '2011' + '.nc'- a  `3 O# q, d! Y3 B: \
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc': m. W. g/ _2 U+ X! X3 @
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
' d5 w6 a4 R5 Y3 s8 k/ Q$ A6 }3 Q'''( w# n) M0 w! c6 _* Z4 l, @1 N, M
# 天+小时# \% j# Y) b0 \/ Y. u8 s
n = 0
8 Y4 p, b# Y2 ~: efor i in range(1, 31):
) Q/ X- ^1 @- n    Day = str(i).zfill(2)
- G' V+ E1 h3 X# B+ L6 j    for j in range(0,21,3):
/ J/ J$ f, t4 J$ W. Z. G  E8 x& W        Hour = str(j).zfill(2): X% L8 A: A. _9 _1 z% o
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
- o5 u& T& T- A1 y& `        print(keys). H0 P, a! c+ X. ]) Y
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()/ W3 U  O4 ?: |+ K1 f
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
2 {0 ]& q; M8 Q1 t& Z3 N        driver.implicitly_wait(10)* a! q1 C5 I" Q; M3 Y4 l4 q
        # click to submit* a- X8 D: P3 h
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
  \4 g& U, n. x3 \        #time.sleep(3)
) C% f/ H( m' A2 G6 [/ N8 \, j$ l        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()2 R! m$ ^) z9 V
        time.sleep(10)  _! ~1 a7 y# d& y
        dir = '/Users/qiujingyi/Downloads/'$ ~0 @3 H4 S# I  H+ M
        oldname = '2012' + '.nc'
0 Y6 v6 c9 V  J' y# D0 s        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'" m: ~$ Z- N/ ?, L$ M2 |) ]
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
9 y, S( t% [& C'''
% ]: F# ^. e% l1 d5 A* W3 Z6 l; v& Z

0 s. Z" J& N, n                    # t8 e% O) ~: U, J# J8 C% ^2 A
1 F- _: u# U+ j; ]: C" B6 i
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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