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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)1 f$ q) ?$ a" N" n; ^" r
=====================================================================! V/ q& W: m4 p; i0 C  n2 t: [" G) p$ Z
import time; ?+ c3 o' I' V
import os
! I' T1 W6 h3 Kfrom selenium import webdriver
# T, x* R4 [. q9 K9 @from selenium.webdriver.support.select import Select
2 M3 `! C. Q0 n* u* Zdriver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')$ B' D: ^8 Q/ s8 X( n/ P3 Y, _3 v
driver.get('www.52ocean.cn')
. F: Y  A4 J1 ~2 z: |, i2 v. O9 d' D/ J#driver.get('www.52ocean.cn')
3 A) \; r! K: c9 x- [1 o0 L+ o3 Bdriver.implicitly_wait(10)
* |$ u8 k7 T4 T  D# click ele- X9 {8 q$ w# R0 h: q
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()' V; i7 G  A5 e0 I1 t' S3 M
# click S,T,U,V5 U! e4 w5 N, Q# X. u: X  y
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()# ]% o. T) r( N( X4 j8 `7 @
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
4 _# j$ e* u7 v/ Hdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
' s8 i( Q/ Q$ xdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
7 z; o( H: n1 l$ `" f' k2 Ndriver.implicitly_wait(5)
% j- G  \! F, s& N+ A( c) o# click Disable horizontal subsetting
; ^3 Y0 t( h* F* Xdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
  A+ e  b* I/ `3 X# input lat,lon6 W" u# |- q% N" c1 ]
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
1 ^3 H+ U6 m- ?3 |7 i. j- `$ Ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
# T+ B6 G8 r, w6 G- r8 Gdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
2 U5 n& ]: B1 _2 d3 ^- bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()) L  _# I1 J( z2 j
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()+ @+ f! l4 U, j4 i
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
1 n$ o' h# I5 m, C6 t/ f  pdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
8 G# h1 w$ n8 d, ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
! u' i6 z( ^, w3 u- ddriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
" |1 M) E! S$ F+ D- u. u' Fdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
6 @+ c7 e! Q& r* Ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
8 e( Z: M. Z# sdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')/ [" B; D: w5 y
driver.implicitly_wait(1)* E4 }8 L0 L/ @( z4 u" g
# click vertical stride+ E" O4 u7 O( T
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()' b; V3 d( f0 A1 N
driver.implicitly_wait(1)  w7 F' d$ t: t) g. K% ?. v
# click to add lon/lat variables
& C; d. T) j: f0 K5 x+ A3 f% Bdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()3 y' n4 x/ L7 b
# choose output format
8 `7 x9 k! \& T  @0 s. p! F' V$ D1 ^s = driver.find_element_by_name('accept')
$ ~0 j# m3 W1 v" sSelect(s).select_by_value('netcdf')% F  A1 p* K: D# j
# click single time, and input data_time
' K5 j0 e, u( n( |5 G, ?$ @& U% v# 天( `6 Z* ?% I: o: Z2 c9 P
n = 0
- I. r- k; a2 U$ X' lfor m in range(3,12+1):       #月份" i( _/ Y* R. E2 @  w( ~
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
6 l. O; O; P# b" x, A        month_num = 31    # 天数$ f* ]+ Z! H8 y) q( Z
    elif m == 4 or m == 6 or m == 9 or m == 11:  q5 T7 u' q6 d& ^/ j% O$ O
        month_num = 30    # 天数7 h7 W% d1 V% p: U6 D
    elif m == 2:- u: @/ m- n' z  E9 Q* L
        month_num == 28    # 天数. ?6 Q" W' H7 ]
    month = str(m).zfill(2)
* P) n: Z* h, f8 G. b* s8 x6 K5 A1 o    for i in range(1, month_num+1):
8 y" Q7 ?9 A& w* h3 S; b( H7 O        Day = str(i).zfill(2)
% R0 Q  X0 c  O0 L. L5 x6 e. j        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
3 l' }" C& k: H/ q8 M) J) Y       print(keys)
& y+ g; m% Y% j3 ~9 k  ~$ V# {        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
2 z& r! G3 z! g/ H8 R        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)' h- T/ C/ o# V
        driver.implicitly_wait(10)/ J+ n" W: [5 F  y+ Q; S6 g$ H
        # click to submit
! l, Y- Q% f1 i6 J+ S+ v' v  a% q       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
. J- \% w" [6 \1 W9 S2 ^        #time.sleep(3)
9 @+ E# T, N+ h$ M# E        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
/ B& r! Z- z2 T! {7 {7 A, R1 c       time.sleep(20)3 J, P, R- n  ?) m2 m- N5 O
        dir = '/Users/qiujingyi/Downloads/'% u2 t6 o3 I$ C2 ^# w, \
       oldname = '2011' + '.nc'
3 k: E& k9 ^9 t+ L: u8 b# a       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'' @6 z6 a  b4 u+ ]! i' _
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
1 J$ i& r9 I. D) p' |'''; X. f2 C9 ]3 O6 l5 Z! O
# 天+小时. _7 X5 g' G: v6 |# |
n = 0
+ Z/ T& v& P! }/ l4 @1 R0 V, c; ~1 @for i in range(1, 31):
, M6 n, D- S( [: r    Day = str(i).zfill(2)
) H1 l  d( i( U2 A7 v# d8 I    for j in range(0,21,3):% h/ }* p; K! L& U) ?- B
        Hour = str(j).zfill(2)
! p  j* S' H+ g( o        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'# B. H/ k: x& |
        print(keys)0 g0 Q& m* j$ y) d, I
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
9 C* ]9 Z( D* J/ h6 u        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)4 e5 O3 R1 g" U7 }9 J) F
        driver.implicitly_wait(10)
0 O3 J& P* Y2 ~, H        # click to submit/ A8 M& Q- u+ Z$ p2 h. M% E2 r8 I
        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
! D1 V9 ^. a- B9 g1 \" v4 z( X        #time.sleep(3)
( Z% j* e' m/ u+ c        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
+ U# G" [6 ?/ o- m8 ?- v6 n7 Q        time.sleep(10)5 ^# d+ V  L) J0 v/ f
        dir = '/Users/qiujingyi/Downloads/'- \# ]( S; K  ?9 n1 l
        oldname = '2012' + '.nc'
7 n; Z4 u+ v3 x3 B        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
: |* P% E: H1 x: ?        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
* Z1 P! R1 @9 b( v) z) A2 k'''
, t/ \& K# l, _1 x) i* u
1 \  j' k$ T5 m  _9 M% D+ p& m- r
                    
% D! f& ?# R$ O) Y5 g5 F- Q! O3 Y4 {( s( c: f# Z
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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