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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)8 v$ l4 ?' ]& j+ E6 J$ P" R$ V2 z
=====================================================================
; U' B* W4 [& v& b6 t/ S0 |import time) s0 K. ^" j3 h1 h
import os( a5 J8 J% A1 L' _* Q& K7 h' I
from selenium import webdriver
9 y6 c1 P* v# U+ R) Ffrom selenium.webdriver.support.select import Select( X8 J8 Z, H. ]; _6 ?/ B1 y
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')! D& C7 o( T* y+ Y3 l$ Z& S
driver.get('www.52ocean.cn'). w! T) u/ u" w* f
#driver.get('www.52ocean.cn')
3 g& ^5 M; ?% Udriver.implicitly_wait(10)+ ?) C0 [6 {, s/ c
# click ele
% x, t0 p0 N5 ]0 ^8 Pdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()6 |) i% B9 r' f! O5 u
# click S,T,U,V# M. {9 u/ f4 B4 q, b' S) ?' L
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
" L$ Q: h8 _. F4 ^driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()8 l+ V# A7 m' y& p) R3 h
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()9 }, M& u+ Z9 A9 P1 c# ?
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
0 |, @4 Z- T& u, r+ K( z. a1 D3 gdriver.implicitly_wait(5); A' y5 D+ I8 i$ q; K9 b% c) v/ U- Y
# click Disable horizontal subsetting6 A' ~; v; m9 q3 M5 g
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
' ~7 L3 H; d; a* V! @# input lat,lon
; M& z% E4 Q$ ?driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()6 Y$ P  B; e# k. i0 B0 [
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
! V# t$ V, k- H  Adriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')! S: ?! q, L9 s- T2 ?
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
* L- }8 r* Q7 Udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()2 w. L/ P$ c3 Z! \& |6 g
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
  A; \( |! a+ {4 m& s  y7 n( Z7 Udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()
1 w: d3 p( t0 @- c! u1 tdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
6 k8 A- r2 U8 Z: \* Jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')' C, U& \3 |! U7 N) d7 j8 Z
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
* v* J% N9 S$ X  Y9 ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
* ]# q* [. P1 b5 Mdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
- ~3 h. b5 c7 N9 ]1 ?3 r% ]9 }driver.implicitly_wait(1)
2 \( S: ~8 m, ?  w; ~$ K# click vertical stride
  O! ]9 E# `; o5 bdriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
( J5 b5 x  P8 Kdriver.implicitly_wait(1)5 T) n3 S  m# i0 D8 d/ f% ^- g
# click to add lon/lat variables, g5 k* Y, Z5 V3 i
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()3 k$ ^3 G/ C& m  R; F9 c. i
# choose output format
  X, S! H$ ]5 e* l1 W6 o8 q: vs = driver.find_element_by_name('accept')6 f* x" m- q$ ~* Y' n' Q
Select(s).select_by_value('netcdf')
3 r0 s8 L: ^/ P7 f; \/ M! a6 O7 @$ R: f# click single time, and input data_time
: F) [: n$ G5 [( d9 Q, F# f6 f# 天, U7 r# R* s$ W4 q
n = 01 Y9 Y& h7 }: J7 W
for m in range(3,12+1):       #月份" z# ?* t- Z0 ?: x
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
. K5 {& L! G. @7 c        month_num = 31    # 天数
6 m. h3 b. }* N! r9 V    elif m == 4 or m == 6 or m == 9 or m == 11:6 A9 P: X) ]" q
        month_num = 30    # 天数
# U& |* g* W- o6 K" g( [    elif m == 2:
" F8 d5 \2 {% m! H        month_num == 28    # 天数& f4 k+ E, _5 W  g4 d0 x% {6 K
    month = str(m).zfill(2)3 N  |8 x$ l" C& {8 j& _& Z) Q
    for i in range(1, month_num+1):' J9 e5 I- t" [/ H3 C: l( O
        Day = str(i).zfill(2)
3 z: u4 i5 n$ R( J6 I8 H        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期7 g) y: ]$ m! t1 Z
       print(keys)9 Y7 A( ^/ c7 S+ V
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
& l6 U( L* `, Y" l3 `4 G% f        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)/ Y& G9 T0 Q, w
        driver.implicitly_wait(10)7 S& Z; m4 C2 U) m
        # click to submit
7 V3 v( I- s: j0 @6 G8 U       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
( _8 g( h: D0 T' [' S  y& a" [        #time.sleep(3)
) f0 E( L; ^* R+ c: n5 E        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()+ j8 `4 C2 }; y" p
       time.sleep(20)
+ d9 j& o9 F, n) r7 w        dir = '/Users/qiujingyi/Downloads/'3 Z8 K% n% B! ~
       oldname = '2011' + '.nc'
! S& `' w& u% p& r+ c       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'
, O( U# B9 ]/ Q; G7 i. U; \       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))* s5 i# d7 G5 g
'''  u3 P+ b" u. P& L) Q2 m
# 天+小时+ E7 d4 w/ I2 K$ k
n = 0
" `, h* {) f% @+ Pfor i in range(1, 31):: R1 H' v- ]7 g
    Day = str(i).zfill(2)
0 l" G9 [( i& a/ m( J  A3 _" N    for j in range(0,21,3):, e3 n5 e$ f4 ~/ b2 R5 I* P
        Hour = str(j).zfill(2)7 H0 h( [; N6 ~2 o- u. W' i
        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'0 {  R* O: S) C8 k7 P
        print(keys)
7 Q6 `) ^; G1 T7 g5 w  N        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()& K. Y) A3 v/ o+ M2 r
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
, i& D7 Y/ {6 `7 j# c( _3 E4 w( G        driver.implicitly_wait(10)
8 f! \4 `& x6 Z/ E3 i/ ?        # click to submit
0 B& W! p1 k& i: t( m# ?& [        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
7 }/ _4 F0 y3 \/ m3 ~9 w, i        #time.sleep(3)
+ a' v; K3 R2 }3 M  D        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
+ ^0 y# O: g& O# B4 q        time.sleep(10): }8 K0 q; N; I( J, \1 o" I
        dir = '/Users/qiujingyi/Downloads/'
  T; r7 T; _6 G        oldname = '2012' + '.nc'
( E/ d2 k& v6 E* T4 h8 ^5 f        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
+ B2 O; m5 `6 z+ Y: m% }        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
  y) W6 F9 `# @" ~9 n''', _0 g; A9 R" h/ J% x$ V3 k* {7 h- r

1 ~0 N! y- }2 a0 Q) D1 _- _: j) K5 Q. H+ E% O* f, `1 V
                    + k4 j5 ~4 ~. k) }8 |# B/ `
# V' K' L! S5 X, {; z# S$ ?8 f
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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