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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!): N4 g, J$ U! K/ L! N# z
=====================================================================& \8 [8 _; y: G6 k
import time
5 r' S% M7 j: z! K6 q5 F! g, `import os
5 G) ^, H8 S* s1 K' L2 yfrom selenium import webdriver
  ^- u' r0 p- I1 U8 _) }from selenium.webdriver.support.select import Select- [  A" W$ V. U/ ^& M5 s
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
; V) N7 ~: F0 s8 Z- V  \- T0 Mdriver.get('www.52ocean.cn')& `$ V- [0 {$ X+ u3 s% l2 `
#driver.get('www.52ocean.cn')
; k* K# U# D7 Z! _/ Z) c2 n8 X3 [driver.implicitly_wait(10)! B8 {4 s) k# @4 p- z
# click ele! g7 Q0 ^1 E! h+ w
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()
' _% k+ u, E3 |8 z. `+ d  L& C. d# click S,T,U,V! l& [2 l- y7 _3 |) I8 K' z# r
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
  f' _; p. Y3 G" }4 \driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()! R! ?* n  m- ^! \( l
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()
& R' Q. J6 V$ \1 n# gdriver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()
  l" {5 s( R8 c! y8 {driver.implicitly_wait(5)
' L) u; t0 e: @! G- t4 e# click Disable horizontal subsetting- M" H8 ]& q% X7 R
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()$ R' _" q( I  c2 j3 O( p
# input lat,lon
, l; z8 v* a1 Z# Vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
" J" ]& `  C4 J9 _0 qdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()( E9 u; o7 [) I* y8 L4 h( A
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')( \  y. y4 O3 g9 b9 F' w
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
; J1 M  h2 r- M0 [! ~- T& A! w! ddriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
# E  F' ~0 n* cdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')9 G: E8 \0 k" v  F$ v8 E
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()% J' L* o" H$ e' q) U
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()
* k" d$ r$ i4 K  ^, }driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')- {' n( Q! A& D; e# R
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
# r) I4 @4 h1 D; @* p1 \  j$ C1 pdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()
1 s- g: _1 N3 @+ J+ s3 vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')
3 c! I. M2 }2 `5 l$ d# K( Jdriver.implicitly_wait(1)& o: D9 v- b$ S* L6 r4 {) z
# click vertical stride
7 R! J7 f3 \! A  o" f1 O' mdriver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()) s5 h5 K. ], I
driver.implicitly_wait(1)$ }' ?6 o& o1 N, `
# click to add lon/lat variables' @; J& L. L; D, c( X- ~& Q( x
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click()+ m: A6 v. F% R+ q3 _7 m
# choose output format  R: J. z& G$ f3 r
s = driver.find_element_by_name('accept')
4 ?0 M6 c+ n9 }2 FSelect(s).select_by_value('netcdf'): O3 K. e6 E2 l* j  p4 C% K5 K
# click single time, and input data_time
$ c+ V2 T+ ^& H" `+ u, l* L) z# 天4 V# b& J, H+ k) w* W
n = 0. T9 q$ L2 J. L0 {3 [* F/ z
for m in range(3,12+1):       #月份. m4 L( ^# y, P
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
9 [7 \7 l: A! A: v3 r        month_num = 31    # 天数
+ Q* w& K/ P9 m& L' P" i    elif m == 4 or m == 6 or m == 9 or m == 11:
5 j) w+ g" Y/ \0 n        month_num = 30    # 天数
2 P: I- Z% |% k# D    elif m == 2:5 q( H( x3 Z& g' R7 y8 s
        month_num == 28    # 天数& f/ Q, `/ z7 w9 ~
    month = str(m).zfill(2)
( q1 q# D$ ?" L4 w* a9 \' v    for i in range(1, month_num+1):
# H4 B# N: \- Q        Day = str(i).zfill(2)1 i; v+ K6 t+ G% X1 v- s2 t
        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期
6 y4 O2 \0 X1 a. y, ]- T       print(keys): U, j2 P6 Q( K# \/ K
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()7 {/ H/ m, X; p( @$ z
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)  x, M2 P4 \3 h# u0 z3 A
        driver.implicitly_wait(10)& S. l) g, B# j# u& M
        # click to submit# l/ L+ Y+ j. r6 G
       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()- W, Q% ~8 ]3 I) d9 ^# t$ y
        #time.sleep(3)
6 F. c2 h- p3 d7 J" {- o        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()' c- h$ ~8 a& s. A" y5 v
       time.sleep(20)
, e8 C5 F- L+ j, z, O        dir = '/Users/qiujingyi/Downloads/'
) C8 D- ^4 F& \       oldname = '2011' + '.nc'
. M; C! X) D# t" s       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'# k1 g- z  b" R; N" u" ]: ^
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))7 F2 v# q8 ?& G* N8 I, l. E8 o: D
'''
- @# C* t% l, M& x, M" R# 天+小时
* s6 V9 {9 b' dn = 0
0 @$ @: B  M0 ^7 H/ Vfor i in range(1, 31):
& @6 ?; |2 i1 L1 r: i' c    Day = str(i).zfill(2)
3 U# j6 M0 F3 ?5 Z* j    for j in range(0,21,3):
* w: ], R. \/ X7 _; N        Hour = str(j).zfill(2)
( s0 k/ `2 R. h) n$ }6 W        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'
- O7 f* b+ E. n: `4 o& c        print(keys)
5 N) L. B: ]% k7 |# W, K  P7 C  K        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
  Q" s: g* N8 _% j        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
9 e! h1 D5 d4 L        driver.implicitly_wait(10)
. `3 Y' {' K- U        # click to submit
5 ], k' G; ]# m0 L        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()" f. [% L* y7 u3 b0 i0 |0 }
        #time.sleep(3)
" _0 E  \; b% h. _        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
$ O4 c& E! R- O  J0 E* _3 o        time.sleep(10)
& e1 ^3 B6 \4 R( y$ |        dir = '/Users/qiujingyi/Downloads/'
- H3 |. {& M/ C% r9 e! l* u# v        oldname = '2012' + '.nc'
* p' g& Q( i6 \1 z        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'8 [$ t( y* N, P" U2 y/ F
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
5 a1 I' a, p3 B: K) `'''4 ~2 N4 [3 W+ E5 E# G" d2 y' e
- D( V2 F; l/ x# N

1 v1 q! b2 {% j' \7 q                    0 n) \! K( Q0 z$ V) h3 f
2 d$ w9 w0 h4 f" B) i0 N) F: e
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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