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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)- h, U1 I# k) j
=====================================================================
+ q7 Z5 l) ?, H/ M; b) ]import time) g* k* {3 L: l$ n3 L& M- J
import os( x% G) b+ f, e2 h( C
from selenium import webdriver/ j: D* Q2 x; U4 D" S0 P
from selenium.webdriver.support.select import Select
7 ~0 j: b3 ~, k  ]6 B. y* G! idriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
/ U" a$ {4 u( {. s" O5 I9 y& vdriver.get('www.52ocean.cn')
- g- ~7 F: D( U#driver.get('www.52ocean.cn')' [. a- V# V& |: `" ~$ m2 U
driver.implicitly_wait(10)" K6 _5 ~) X" }" _7 T8 Z" e
# click ele
/ Z2 h/ F- \! y; Odriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()$ A8 r$ b  U. M) @  \
# click S,T,U,V
& M5 h) D8 b+ `# |3 j8 ^# \% Rdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click(); ^2 K0 m/ j! W' _3 e1 F0 y
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()  A9 ~# T2 K" Y4 r0 q) B
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()3 Q3 y1 k4 |5 ^; l$ X# ^3 z& M
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()7 p6 n; c5 d  x% W+ ]
driver.implicitly_wait(5)
/ ?+ K! |5 J. [) k8 f# click Disable horizontal subsetting  F  w$ {1 s+ L/ k; y
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
* s' T: C% ]% p) J: r* Z9 B# input lat,lon9 a2 Z9 n3 l. z: V: l3 S; E$ w
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
- O2 Y" q1 ^1 ]# Ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
9 W" u7 H# k8 r; d! E; q) odriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')! Z/ s1 s+ ~! T( B& h
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
* d& j9 g( o3 d( J- ]0 Ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
) S. f2 j( W- w+ n  I& |driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
+ N3 j" S/ [& ]0 u4 E# Gdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()+ Q) `4 c/ p3 x" F( J
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()5 D) I& x9 i5 L8 O' v  `3 c
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
' j4 ?; ?, Z  g3 K2 n$ z1 fdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
; a# H! V, t; }3 Rdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear(), g9 v5 d( w5 @9 T
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2'), h: K/ ], E( L5 o
driver.implicitly_wait(1)5 Z; V5 `$ Y; ]% g! X+ Y7 L
# click vertical stride
! @; M( u. P/ D/ zdriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()* `- y0 j+ t- {
driver.implicitly_wait(1)
, }" Z5 g1 m2 x8 K' x" \# a# click to add lon/lat variables
& ]; J; j! y7 i" q6 w3 _8 k0 `driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()
) U  G: P' J& o2 ]- A! G# choose output format5 M/ o# `- ?, c7 D7 {! b) f
s = driver.find_element_by_name('accept')
6 L" g: Z4 W1 k% m* C6 rSelect(s).select_by_value('netcdf')
7 z! u! D1 w7 y* O# click single time, and input data_time
6 X/ E) F( k* q0 Y( L# 天
1 ]8 J; j; u4 O, I! dn = 0! U$ H+ m3 ]0 q8 U. h- I3 z' Z
for m in range(3,12+1):       #月份& Z4 l' J  o( A8 h+ e
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
: D+ Q( C' {  Q( ^" j' B        month_num = 31    # 天数0 X9 p5 E. O. c+ ^7 {& _
    elif m == 4 or m == 6 or m == 9 or m == 11:6 R( O) j4 A' _& `- x; b
        month_num = 30    # 天数, h- l4 q0 G9 B
    elif m == 2:8 h- d  F3 i$ `; W# p# a
        month_num == 28    # 天数2 ~. L4 m( J4 W7 g3 ~" r( F) p
    month = str(m).zfill(2)
- o$ z8 G6 E# t    for i in range(1, month_num+1):% h) K, i% t# H1 }. o
        Day = str(i).zfill(2)
# r& Y# U8 w3 R+ b( B* l        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期7 ^/ B5 y# v7 x% L4 Y
       print(keys)+ T8 n+ a( {) X# ^+ r
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
& H' e( Q$ g& J8 K! u        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)) i$ E  {9 q; W3 X5 |' B% v
        driver.implicitly_wait(10)6 F* q( Q/ ^8 ]9 f' f' O
        # click to submit" x% _* d! \( M( m" s
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
6 Z/ B" I$ U9 e: o5 m) `- M7 V        #time.sleep(3)' \0 _! ^# o2 L1 b! w3 a4 a
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
  J) {6 R, A  ]0 A3 h' [( @! q' A       time.sleep(20)* Z; I( s# J$ Y& f) M5 [
        dir = '/Users/qiujingyi/Downloads/'
8 H* ?9 {' H+ y, d0 F       oldname = '2011' + '.nc', q- W5 g1 u- C$ P/ v6 R( P: [
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'# N. _" O  C$ v& k5 M" k% y' p
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
7 G. ?3 l) H3 f: `7 ]/ \3 N( B'''  K; i* w" d  A9 J, {
# 天+小时+ _, u# [7 \; c& B  e
n = 0$ m/ z  Q: V& a) O8 b
for i in range(1, 31):
! d& p& a  ~/ j0 E3 u- ?    Day = str(i).zfill(2)
) F7 D8 d- r- d, O+ F    for j in range(0,21,3):6 g6 n2 m! w% T* Q( H. ^. c" m
        Hour = str(j).zfill(2)
# R$ q; p! g  G# w* k$ p# Y: _. z        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
  M& b# P9 s8 V        print(keys)3 S8 F, B9 }$ l/ r4 ?9 n* p
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear(). o# A/ N# ^  h0 f- C
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
) v3 r8 H. m; }2 j2 P0 d& A        driver.implicitly_wait(10)
5 \1 O% l  o" `3 K3 Q        # click to submit
" Y2 [4 O* r4 s# `, T3 I. I) x( j; r. c3 \        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()& g$ E5 ~6 R2 F& H4 z
        #time.sleep(3): B& v/ f' N) q4 Z/ H
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
1 @5 ]2 W% V0 N7 D1 [, O( D% e        time.sleep(10)
$ ]  B" T  _  x/ y% ^2 Q- K        dir = '/Users/qiujingyi/Downloads/'9 S. E' y2 h. L1 ^) y' D% y
        oldname = '2012' + '.nc'' f! j$ ^! u5 |: L8 ?" {5 `; s  n
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
' z' _) X3 |& z; g/ B        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
: m( f. w8 j3 ]+ c'''* p3 y0 d7 [4 b! d( ?4 \
$ [: R: ^! `* {0 a

+ C) _; W% C( j2 t$ u( W; ~9 V                    
+ J% g" W$ A. W2 n: T4 m3 ^' l
3 }1 e1 v/ q7 a# W+ u, F% K. b5 _7 E                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。

相关帖子

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