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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!)0 t0 r; e- e4 ^. }7 m0 Z9 \
=====================================================================
- T( n9 F' p2 _2 |4 ximport time
2 }& L0 Z/ G7 I' L6 vimport os/ u) Y. f8 Q. W( m8 T% f; N
from selenium import webdriver
: a! g6 Z3 g0 u$ cfrom selenium.webdriver.support.select import Select0 u  [: s0 ]# |0 D+ r
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')2 ^3 P, f7 T! w' S8 R( ~* D/ F6 O
driver.get('www.52ocean.cn')( A+ U/ i4 n- q8 M* \
#driver.get('www.52ocean.cn')
5 }0 R) S) P1 `5 s' h' |' W& ydriver.implicitly_wait(10)
% V: N' Z2 q) g# `; B- Z- K: |4 g# click ele, ~- }# r3 L" b  P# b6 P, M& U% m
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
9 I: m0 V7 c- L; {2 u) A; a# click S,T,U,V
! u7 d# D2 ^8 `! @# ]; v. j0 }driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()+ |- y. x9 W: O+ F! t+ Z
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()
# J3 J$ S6 m' z1 V6 t! ^driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click(): L( W( i( g' g
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
) {$ d+ K: q0 g. Edriver.implicitly_wait(5)) A- G0 l& m, n. T5 V0 G
# click Disable horizontal subsetting
4 s$ N0 ], v  S" `( m5 g+ tdriver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()
' D/ f, L8 p* n0 z# input lat,lon. a8 r4 U9 x' n# p
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
2 ?! d3 F: Q$ Hdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
# G: `2 p- Z# B$ H) ]6 q4 ^driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')" L! Q0 k7 g9 h- R  _
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
! L* n  |2 v( B1 udriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
6 x- C: r- J) O9 }1 ?6 R; _driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84'): q" m& ~5 @7 K2 ~
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click(). }) t/ a' V! Q1 R
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()3 l. X1 a6 h; H5 k7 ~% s
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')" R6 i$ g2 N5 U4 D! c3 K: a
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
: I* p: _& K5 d: p8 b9 @driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
- x5 g& W5 Q* e1 n( K8 Ndriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
$ e! c! [2 l  M; P" ]driver.implicitly_wait(1)
: @) k& w) P/ p- U# click vertical stride
2 \% G- Q, ]; {8 E* T3 {+ V5 Vdriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()# o2 L% m& ^  J. h( T1 |7 M( }
driver.implicitly_wait(1)
4 N9 g& s' ], p9 g& C( E7 z$ O# click to add lon/lat variables
5 }1 `( Y# p" Q$ Z9 \9 |9 Kdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()% d7 p. `& _; y- K0 F
# choose output format
5 B& x$ q+ Z7 Y# U9 _; [/ Hs = driver.find_element_by_name('accept')
. @/ j1 o$ M$ A2 ~! XSelect(s).select_by_value('netcdf')
% x! \% j. y7 s% R0 Q# click single time, and input data_time
+ b1 O- n5 _3 C# 天" S' M, [7 X% \, c) L
n = 0
. L& O4 p, {, ~for m in range(3,12+1):       #月份& k* @0 [+ S, R$ v; M
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
6 p1 d0 |; V' L        month_num = 31    # 天数
. g( y6 _: E  Z1 ~2 `    elif m == 4 or m == 6 or m == 9 or m == 11:
: ~. |% x7 ?& d# U, h  i        month_num = 30    # 天数/ u5 ^- y& c0 F9 I% U+ z# y
    elif m == 2:; v9 {5 s# P/ J/ Q+ ?
        month_num == 28    # 天数8 Q- v. |% X* @% ^, r! ^5 Z
    month = str(m).zfill(2)
& B4 r0 e+ F- h- M8 R( n& B    for i in range(1, month_num+1):6 |# p( ]( t  E, j- ]5 f8 N2 A
        Day = str(i).zfill(2)9 b3 j7 P1 {- x" i: A/ k+ C
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期) G' @" K; h" H+ ^0 S6 P
       print(keys)+ R* a7 C' F& q' s5 h- q
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear(), _6 ]' |6 ?7 b' m/ y: z
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
6 G# P5 C* u) R0 w        driver.implicitly_wait(10)! p/ I  b' k" H; E/ a4 i6 ^  s
        # click to submit
/ e# A9 x& f# I       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
! G1 ?0 c% \/ u        #time.sleep(3)4 p6 d. E$ f/ ^5 I/ C
        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click(): t7 y" }8 X( r  J
       time.sleep(20)
( g: C+ ~9 Z" ~' s* L( h$ }        dir = '/Users/qiujingyi/Downloads/'" K$ `0 k# J. x2 ^( ]8 O3 E8 t
       oldname = '2011' + '.nc'/ i9 Q3 K8 F, K/ u2 ~3 L
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'' ^4 x: J7 K  v/ x0 ]: @
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
2 ]5 y4 {; D0 }6 g'''8 j! d  X' N' M4 S0 Z
# 天+小时
, y8 t% u& y/ c' @9 n& A" zn = 0
. Y1 q' c) B7 lfor i in range(1, 31):; V# [8 ]$ ~0 |, G7 p2 {2 H' A3 K. g
    Day = str(i).zfill(2)% I; `& D% j5 \" ]3 l
    for j in range(0,21,3):  x9 Z( b6 Q4 T" }! Z7 |" K- W
        Hour = str(j).zfill(2)
( u' E" D2 {8 A        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'' v& L# k4 s' _9 F5 e) D! ^
        print(keys)7 @0 N! ]- D% v, p6 x$ k- a& A
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
# s5 j0 [* @4 _) H        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
/ q: j* u/ D& f! I* F0 g        driver.implicitly_wait(10)
& ~) ~8 B0 {; J1 ?        # click to submit
# T2 L1 I$ }/ Y6 k! P3 i4 m        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click(); X9 P# @) u9 g! F/ Z; J9 X( @
        #time.sleep(3)
! E6 p1 o, K& y+ a6 R        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
' g% k* u% N% Z0 G; d; }2 U) h        time.sleep(10)
  B" H4 \1 s2 p; N7 C/ P        dir = '/Users/qiujingyi/Downloads/'; H9 ^5 M; o3 @! J
        oldname = '2012' + '.nc'3 N2 G* F) y8 F) Q( z0 B* U$ f
        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'3 F' k- Q0 G5 _8 I, i& o
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
% S5 v9 ^( ~' w'''
( g$ y6 K  o6 t5 N
8 b8 @3 }4 Y) b, g1 t
. x0 N: ~! P4 u: O0 @1 B                    
  j% \1 t5 h! ?/ {: m. ^
) G% O5 `3 v- E+ X                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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