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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!), X( ~* [" J6 u5 Q7 W
=====================================================================; h% o% J( R5 x( @
import time& g4 F/ S2 U# l4 @$ ~
import os
8 d, K' Z9 G: h8 Y' xfrom selenium import webdriver# ]6 w5 c- d) n; L
from selenium.webdriver.support.select import Select4 i. n+ K3 H" X% V& _
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')0 W# ?: H. ?* i
driver.get('www.52ocean.cn')
' S3 k2 n8 U1 f; b#driver.get('www.52ocean.cn')4 i: e& x' n+ M8 R; [! U
driver.implicitly_wait(10)
3 i/ n+ B0 ]2 S; j9 }# click ele
* }7 w/ H! z" E- Q/ t) p! i8 I5 jdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
  ^' |/ }3 l4 h# o' q  ?0 J/ r# click S,T,U,V/ d2 q& X. V' u. a  V  O  L0 G
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
4 o2 G! ]: a1 k2 Pdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()$ X$ b/ v- K- J/ s7 I
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
: t5 x8 U8 X+ k! a1 ~" [! R& \. pdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()% T' v2 j. j: W/ s' f
driver.implicitly_wait(5)$ L( o1 K# C+ \, Y
# click Disable horizontal subsetting
: M* Z- [4 @; u! S; U  R% V9 x$ ldriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()# b  s2 n3 I9 H( o5 x3 y5 G5 v) ^, l
# input lat,lon
2 N6 |' i$ U5 p0 pdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()3 U, _6 k( @% ]4 s
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
/ k- f% z, [6 V: V; S' x: udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')9 B- ?' l2 C* {8 }( N+ m
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
8 |1 ]2 r4 g6 I3 \% L, i* ydriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()* F7 r, R2 [" ~+ i; k) G6 p! D. |5 j
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
; h5 ^2 l8 r& B! Y9 [driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()0 O$ u% p% |. L3 Q
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()$ S5 q2 N& H7 {3 Z0 F& k
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
4 Q& `# l0 k8 m- Kdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()8 _/ e3 ~  Z* ?. d8 E' f
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
3 a* ~& m& u" ?! q& e4 ?9 bdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')( J# v3 I1 c) W" L0 R1 J
driver.implicitly_wait(1)
$ Z( E; e4 h) }/ C" W# click vertical stride! S5 ~/ K0 L7 _* P+ w
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()* }: c. {' g4 e, X1 T/ X+ h. R
driver.implicitly_wait(1)
- h9 a, P9 c" q* Y. B( k7 q# click to add lon/lat variables
1 Y+ g5 H1 S. N! E6 {7 S+ Jdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()8 O' ?  ^- B$ W, N1 w" z) e% W; C
# choose output format2 W. ]) t# y- `8 n
s = driver.find_element_by_name('accept')8 ^! Y9 y, b  d# K! |0 X
Select(s).select_by_value('netcdf')
' W( Q8 n% \! o# click single time, and input data_time
3 I9 ?. V. X6 N! J4 R# 天
4 g, f$ R4 d8 A9 B2 L) ?+ on = 0  C+ F) ]% z- @
for m in range(3,12+1):       #月份
5 I$ ?3 i6 D$ \    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:* m8 a2 V' N  T5 I
        month_num = 31    # 天数3 X) G9 g( s$ j7 O
    elif m == 4 or m == 6 or m == 9 or m == 11:
. k/ W7 {! {. S        month_num = 30    # 天数
2 V) q; B& }0 p, Q    elif m == 2:
: x" j* [' e; }* ^- S* m% L        month_num == 28    # 天数- v" G" g$ N0 C4 u
    month = str(m).zfill(2)4 i4 H0 G2 v1 }4 R
    for i in range(1, month_num+1):
, V' R6 r# L* [1 u" M  {0 \        Day = str(i).zfill(2)
$ g* S/ ~* ?  f* i$ _) r        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期) o( ?0 r: l; T% e1 L
       print(keys)! Y0 Q0 t/ X6 y" h
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()0 X! _' _% o2 e
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
# J" g. }' g2 ?! ~+ H) m9 Y. K% U        driver.implicitly_wait(10)
% D6 f# ?2 Y+ D! |' P5 ^        # click to submit* a. ]+ I  ]4 v
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
5 d; b& t/ u3 r; R( {        #time.sleep(3)2 ]/ h5 S! N" }0 J. I- k" t
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
2 k( k4 Y9 c6 V; ?1 q0 W! E+ ]2 \       time.sleep(20)
  i) U: Q% M; Z; D6 z        dir = '/Users/qiujingyi/Downloads/'
! \1 x/ L* l- r( L. A# W       oldname = '2011' + '.nc'
  N' s2 m. @5 R- B& z$ a       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'& |* @/ |* ]  p+ k6 m! r
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))! T2 k& e8 y. h8 X
'''# Q4 w: ~, Q) G
# 天+小时$ R2 Z8 R8 c, m: u+ k1 n  q
n = 0
2 V; I" ]4 {- _( wfor i in range(1, 31):
* [( h' q  z% ]8 K+ B6 U. J    Day = str(i).zfill(2)
# E& }; z) c0 [7 p- r6 u. k    for j in range(0,21,3):3 m1 H! o6 F3 ]% q8 [) j& W, w
        Hour = str(j).zfill(2)
$ K" }, x" s7 x4 x; c7 E8 Q4 X        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
; a) I: Z" z; t$ v        print(keys)4 C/ }# _3 S" z
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()) u4 A$ R) X4 J8 Z
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
5 \7 v+ h4 G! {        driver.implicitly_wait(10)! A# y6 Y( R7 Q) I1 |
        # click to submit
) o# L" u3 g: J7 P1 @3 c$ A( U- O        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
% q- }# }) `% T  k: b' y" A        #time.sleep(3)
* S) g) Z3 |  j2 ^1 A! q+ b        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()+ w/ T; r6 t. l5 u7 X. c7 S
        time.sleep(10)
6 s/ w% H& a: ?* i' i# K        dir = '/Users/qiujingyi/Downloads/'" j  y9 n' T7 @
        oldname = '2012' + '.nc'
6 ]2 l+ _2 Y# S( N/ V1 I9 f        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'
4 m9 w' J  H) F6 P% Y# }5 L        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
7 s  y+ X5 V: S# x'''  ~% |5 g% \& Y) \* B
! J  t7 U* P: S6 Z5 @2 t1 O# F
% I8 S: u$ w9 S) t4 w
                    # n& b- w: Q. m& I' z$ z1 z/ v" \

9 H& {) q6 ~( A! h% E9 w/ E% w                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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