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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!): T' d  Q1 C8 v# ^
=====================================================================
2 L. X; F0 _- r6 v- ~3 v" Rimport time
# o, R8 `2 p- ~2 vimport os
( h' }1 A4 b- z8 sfrom selenium import webdriver
0 I! I' Q( y" M& k& I. Zfrom selenium.webdriver.support.select import Select
  \+ X% \/ z' m. v$ Idriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
* \( e; z4 S; i: S) C. Q" Hdriver.get('www.52ocean.cn')
: N. v/ X1 L) x* C4 G  P$ Y# R  c5 ?#driver.get('www.52ocean.cn')1 v  H! \; p( J0 b+ T% }
driver.implicitly_wait(10)
3 o: Z) s% `  [- ^) z0 {  j# click ele
6 B$ T3 M, ~1 o- idriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
6 J5 ^- ]7 H3 i! d) U# click S,T,U,V: j( z: {% r5 n& j( e: o
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
( ~" G: C; E0 J$ d6 x2 p; _5 h9 hdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()" t0 ]5 d$ Z$ O( e
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click(), m8 f7 S$ q  h# ~; K. N6 q' \
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
7 u% S/ ~' s0 B2 z3 ]1 L% V: `driver.implicitly_wait(5)& p  d( b8 E7 C
# click Disable horizontal subsetting
. R: V' Q6 _. s9 i) H4 Pdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
) i# c. W2 y7 N/ t+ W# input lat,lon- I. x, W& e9 B, w: r" B: r& J
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()( X. W6 I* b# E6 C
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
2 D. e, m, D" `7 t- Ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
% d: C7 l, k" [+ Z! R$ Idriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()+ p1 {5 e9 p4 _9 K9 {: x% ^
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear(); R2 l0 N$ ?4 R
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
, Y5 F) n9 N4 b- F  W, bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
; {! q; N# L& z# h2 J* V( Xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear(): p; w* B2 a3 T7 }1 Z" K
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')3 @$ ~( A4 |/ W* B
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
9 Q5 M2 h0 z6 \( @* ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()( ^  W+ W' R" L! A
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')5 J) K. Y/ {/ U6 N& G2 B
driver.implicitly_wait(1); F1 b8 B2 ]! |  N8 e: [( t! W8 Q
# click vertical stride5 A3 B# L/ X$ }5 g8 Y, L
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
8 f5 |+ T! ]) W" ]. s# y( E' ?( pdriver.implicitly_wait(1)' T4 m: F# l* N6 _1 V2 z% j
# click to add lon/lat variables
4 e1 Q0 \# p/ u& {: m* ~: cdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
$ P$ {) ?  Y! V/ L" c# choose output format5 w+ C% p. F8 e1 @: M8 r) l
s = driver.find_element_by_name('accept')
. t# g! p) Q5 k. HSelect(s).select_by_value('netcdf')
+ G' F" R& B% P$ ~+ h* |& _. K; B# click single time, and input data_time
$ ^# ?# }0 j2 q" E. O' \2 I# 天! D% w3 z" J! B5 Y! \5 g) l! c# n4 [
n = 05 [4 D: r8 c4 R" y' h' H
for m in range(3,12+1):       #月份
3 y7 S. s/ l" c0 v/ \    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
2 v4 P. s/ C2 I  }( Y" `/ p        month_num = 31    # 天数
  y# i+ K, b- [    elif m == 4 or m == 6 or m == 9 or m == 11:( {" o  j3 x2 i' U
        month_num = 30    # 天数
- ~6 \; }! `$ d% G6 r; I    elif m == 2:1 F/ ~6 F, Y6 ?
        month_num == 28    # 天数# b- ]1 T6 Z1 [# p' Y, E
    month = str(m).zfill(2)
( W  l1 j5 k# W$ W  Q  T4 j    for i in range(1, month_num+1):/ D( Y1 A# C% }6 w$ i
        Day = str(i).zfill(2)
, t8 v* Q  o" S; K  V# J$ x2 |7 S        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期3 }: D& @: V7 i* J. K/ \
       print(keys)
# m0 l3 v. f8 k# r        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
- C& C; d3 W/ M  D  W. \5 e        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)9 u# e, _0 V: a. z4 n5 T1 N9 {
        driver.implicitly_wait(10)
+ a# N6 l5 f2 [+ W4 ^, g6 J        # click to submit% T% ^5 |, a- [  h, u
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()7 c& E! K9 @- w  k; P3 B/ B
        #time.sleep(3)  G" m! J+ y/ S2 m' a
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()6 R7 X* a3 O7 j( t1 j5 T# r
       time.sleep(20)
; L8 ]& ?* V9 d1 {# \2 k2 E" m        dir = '/Users/qiujingyi/Downloads/'0 Z& H1 Q; G, y7 e) ~+ [
       oldname = '2011' + '.nc'9 H) E3 ]. m( g
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
5 x; M0 S9 w9 G2 Y$ O       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))1 b* f! s7 G. P! L$ c
'''
. o+ R: r2 g6 T  Z5 Z) m- A( U6 `2 M# 天+小时& l3 W5 l7 ^/ M
n = 0
3 e1 Z% W3 D- y2 }* \, qfor i in range(1, 31):8 b, I: d, B0 T  u1 [% H$ d
    Day = str(i).zfill(2)
& O2 y* o" A6 @2 h$ v( Y    for j in range(0,21,3):! G- N' q/ q3 g
        Hour = str(j).zfill(2)
9 i& p. y3 A2 H% z$ m% D5 z        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
% a' f2 m3 }$ X: S  H        print(keys)
2 Y3 l. o& i& x/ K' e. C5 T: k        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()% R/ f: J+ ~6 Y; B, B2 E, m7 a
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
4 n1 `8 Y% x7 ?4 \* A. i        driver.implicitly_wait(10)
; S7 o7 m1 x4 M+ h$ V        # click to submit
, F/ g8 S( ~  |  [& {: V. J4 W        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
# q  Z' L' z+ d! g        #time.sleep(3)
8 w- I+ r, y5 D+ L9 L1 o$ n        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()# b/ z& f/ V8 @4 C' \- m: q8 r
        time.sleep(10)# `2 g: s# a7 i+ p/ ~5 Q
        dir = '/Users/qiujingyi/Downloads/'* g# C$ Y! A4 J" Q) W9 m: T
        oldname = '2012' + '.nc'  V7 [! R9 v  `8 i
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'' G) U8 y( }# j0 {5 c
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))" q- K8 ?# ?8 ?3 c+ y3 l  b
'''
$ V5 R3 Z% d6 Z
# }& n9 X3 c& [" z- ]6 d2 X4 {6 @) u, K1 y" o0 a
                    
+ X/ n; w4 P% T/ |$ b# W; o% k% g- C
; F# O* s% ~' M- u6 k; z. I! w0 N                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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