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

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

[复制链接]
>>>利用Python库实现HYCOM海洋数据批量下载(备注:Chromedriver要对应浏览器版本号!): O/ w6 G: H& t. \
=====================================================================! P$ `0 K$ @5 r. ]
import time% s* S3 g% v3 c0 }# ^$ C# k
import os
* e6 ^) i( H9 X, s" \; x/ sfrom selenium import webdriver) ]# s& d& M/ U6 y2 B
from selenium.webdriver.support.select import Select8 J& V/ J! }' B
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')9 q2 T8 O6 i' @, A- S
driver.get('www.52ocean.cn')
6 D# m9 O/ ]" k' F* ?#driver.get('www.52ocean.cn')
0 }' l+ A  _$ |% h' T4 jdriver.implicitly_wait(10)& G  p; A: C! I. R# t: K
# click ele9 ?/ w7 r9 I8 _9 F" l) C
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[1]').click()+ H/ d3 Q9 l) A  n' d, C
# click S,T,U,V, F& y. X' D4 C% V! p, e8 f
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[2]').click()
  u# K, `, s* p+ x2 D. }7 ^driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[3]').click()$ f8 N& F: f6 n9 z' @4 Y, ]
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[4]').click()- c% f; [6 G" }; s# V4 a7 b! R0 n7 `& h
driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[1]/blockquote/input[5]').click()5 Y( w8 k. J& k2 z+ @
driver.implicitly_wait(5)
* l' [, z0 e! s5 e2 _# click Disable horizontal subsetting4 f) Y7 V! f) q7 n3 ?  l4 n' m
driver.find_element_by_xpath('//*[@id="disableLLSubset"]').click()) [+ q0 s4 z+ }+ J4 g; O
# input lat,lon, P7 w/ L1 O: {# y3 _/ C/ i
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').click()
: Z5 M/ {; z$ m- A4 y" g# O5 vdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').clear()
% l1 f5 n( l% l, ~# V* @* ldriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[1]/input[1]').send_keys('2')
9 o# V0 k! ^) J0 s' cdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').click()
5 c$ K/ J; h% C2 r2 o8 Cdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').clear()
. ?% l; Y+ t' Xdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[1]').send_keys('84')
' ]# D1 J* p# Jdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').click()$ F! l! v5 v% t- i4 D0 {3 [7 S# |2 e
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').clear()4 f7 y9 b: b& p8 p+ ]$ m5 g
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[2]/input[3]').send_keys('94')
/ x& a3 e/ a. i0 _  d2 s( zdriver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').click()
, y( v3 x* G( T* V% N% @driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').clear()- I+ _  u3 T) K
driver.find_element_by_xpath('//*[@id="latlonSubset"]/div[3]/input[1]').send_keys('-2')3 h8 Q3 D( ^' F0 Z  w" ]
driver.implicitly_wait(1)/ _' A8 g; N% K9 {1 N$ d* x- d
# click vertical stride! l) U1 k5 |& {# r( I- @( H
driver.find_element_by_xpath('//*[@id="inputVerticalStride"]/span').click()
$ l7 B; i' S, P) h0 G  Ydriver.implicitly_wait(1)
, `* G3 t$ i2 G! T( Q2 F: [# a# click to add lon/lat variables
( X# \) p  [; l& |driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[1]/td[2]/div[12]/input').click(), x9 j) ^! t* v! Q4 y2 F
# choose output format% l& b" F# p9 ~: }2 E) U) h7 ^
s = driver.find_element_by_name('accept')7 e4 P6 j' Y! ^0 L. [
Select(s).select_by_value('netcdf')
; m1 ?( S' J3 D; a2 Z# click single time, and input data_time! D8 X% E+ O/ ]8 {
# 天8 N8 L( e" x: i
n = 0
$ J! ~; |0 R1 R# Yfor m in range(3,12+1):       #月份
- g, @/ \# Z% c9 k4 \/ G8 C0 S    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
* b/ Q) D/ K8 n        month_num = 31    # 天数* ^1 y' `! b& Q; Z5 H9 Z
    elif m == 4 or m == 6 or m == 9 or m == 11:" \' k- U: l0 a, ~! k6 p( M
        month_num = 30    # 天数1 K* N; r6 b4 i$ Y+ S
    elif m == 2:
0 E, B3 H1 e2 h( J# c5 C% R        month_num == 28    # 天数+ E( x1 `# g3 Z& o& n
    month = str(m).zfill(2): w3 d4 O+ |7 e/ y
    for i in range(1, month_num+1):
3 c: k2 a( z0 p1 ?: j        Day = str(i).zfill(2)
6 k+ s# |) s6 F* A3 u        keys = '2011-' + month + '-' + Day + 'T00:00:00Z'             # 日期% }3 y8 v- s; D) H: r
       print(keys)- [, E) X" u; x, \% O% e7 I
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()
. W8 H6 y$ U5 y+ C1 ]) ]        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)/ ^- n5 L, v7 `4 q
        driver.implicitly_wait(10)
$ u2 [1 O5 n5 }0 n5 z        # click to submit
/ ^7 z% _2 Z2 ?% j# n' |9 |  n       driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()4 _% ~, y2 R" ]- a+ a0 S7 e
        #time.sleep(3)
9 U) z# l& M: ~- l2 P, T; `/ b        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
8 c! g8 U: L0 s/ p& F6 e; w5 e9 F- ]       time.sleep(20)
, E* D; ]) p2 C. M- i6 n- }        dir = '/Users/qiujingyi/Downloads/'. v+ Y- G% v5 N1 g6 L+ W% F0 z2 ?% A
       oldname = '2011' + '.nc'9 o$ c. d4 H/ n- B/ y# r" c) e
       newname = '2011' + str(month) + str(Day) + '000000' + '.nc'; u3 R  ~( R6 J! r" D
       os.rename(os.path.join(dir,oldname),os.path.join(dir,newname)), e4 R& L' x8 m# L9 Q; ?1 K
'''8 o+ E( w* I! b8 Q5 T
# 天+小时
! C9 W  s/ l# x+ R" G' k3 [n = 0( W# f' m" i! y7 ?' d4 e
for i in range(1, 31):5 c0 h/ I! h- e+ n
    Day = str(i).zfill(2)' T' s0 W7 o7 Y1 n) o
    for j in range(0,21,3):& S' H/ W/ p& H: }3 h. k# e
        Hour = str(j).zfill(2)
" @. b$ r) {, }( `( h        keys = '2012-01-' + Day + 'T' + Hour + ':00:00Z'# e2 M: V3 O! X
        print(keys)
. Y" E2 d; i9 q( H' w; v. s        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').clear()# f# W) e( e9 X- C9 y# \
        driver.find_element_by_xpath('//*[@id="singleTimeSubset"]/input').send_keys(keys)
: U3 H! u7 E( R3 e3 r: I        driver.implicitly_wait(10)
' z# @9 j; o$ n        # click to submit
& q$ D# d! {: ~: h& L        driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()7 g  r5 F9 J. C
        #time.sleep(3)
' c$ Z4 c" J& A' U: m        #driver.find_element_by_xpath('//*[@id="form"]/table/tbody/tr[3]/td/input[1]').click()
( g8 S* o- c9 D- U  K" w        time.sleep(10)# F) b% V. U+ f4 C  u7 n! _
        dir = '/Users/qiujingyi/Downloads/'
2 H$ Y- F  ^% n' _3 h' R        oldname = '2012' + '.nc'
. W1 t$ V5 I- n; \: @' Y5 s2 J$ l        newname = '201201' + str(Day) + str(Hour) + '0000' + '.nc'4 b8 E% k/ l5 g. D, s
        os.rename(os.path.join(dir,oldname),os.path.join(dir,newname))
+ m, T, w, ~" O; j8 B/ ?  {'''
4 E% r' C5 O; l0 l: k+ P
: J' c( d( Q: b  m
& P/ [. B1 i/ q$ i( r! U& _) E                    % T# E- M9 F! R' e$ L
4 g6 y4 |/ \, y* a
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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