目录
1.前言
2.主要思路及代码
3.结果展示
建了一个QQ群,大家可以在里边聊聊水色遥感数据下载和数据处理方面的事情:1087024529
1.前言
最近遇见一个很尴尬的事情。之前写过用IDM批量下载Ocean Color上的数据(这里不放链接了,有兴趣的朋友去我的博客主页上逛逛),但是最近不知道怎么回事,在IDM中配置好用户名和密码有时候能成功下载数据,但是有时候会提示验证失败,无法下载(令人生气,可能是网络限制的问题)。使用IDM下载Earth Data上的数据可能都会出现该问题。目前想到了一个解决办法,这里分享给大家。
2.主要思路及代码
使用python+selenium调用Chrome浏览器进行下载。在操作之前,当然需要按照selenium库。还需要配置Chrome浏览器,让selenium能够调用它,配置步骤可以参考我之前的博客:使用Python自动化、批量化的下载LAADS上的数据
selenium库我这里用的是3.141.0版本。关于浏览器,我本来是想使用Edge浏览器的,但是selenium调用Edge浏览器的时候,我不知道如何指定下载数据的默认文件夹,因此这里使用了Chrome。
安装好要用的工具后,让我们来梳理下载思路。当我们有一个ocean color数据下载链接时(要想批量下载数据,还得需要会获得大量的数据下载链接),把它放在浏览器地址栏后,其实会首先跳到登录界面。在你输入用户名和密码成功登录后,浏览器重定位到数据下载链接,然后会自动下载数据。这样下载思路就有了:
1.python+selenium自动完成earth data的用户登录;
2.在浏览器地址栏不断填入数据下载链接,完成下载。
主要的代码挺短的,用户名密码替换成你自己的,具体的步骤可参考代码:
#-*-coding: utf-8-*-
#@Author: zhaohaiyang
#@E-mail: hyzhao_rs@163.com
#使用python操作chrome
#下载oceancolor的数据
#
#
################################################
import os
from time import sleep
from selenium import webdriver
#配置selenium的参数
options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, #指定不弹出窗口
'download.default_directory': 'H:\\downloadData' #指定下载路径,注意使用双反斜杠
}
options.add_experimental_option('prefs', prefs)
driver=webdriver.Chrome(chrome_options=options)
driver.get('https://urs.earthdata.nasa.gov/')
username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")
username.send_keys("用户名") #程序在username文本框中填入用户名
password.send_keys("密码") #程序在password文本框中填入密码
driver.find_element_by_name("commit").click() #程序自动点击Log In按钮,完成用户登录
datalink='G:/SOS/olci_202105_oceancolor_link.txt' #数据下载链接文档
with open(datalink,'r') as fr:
urlList=fr.readlines()
n=0
for url in urlList:
driver.get(url) #程序不断的在浏览器地址栏填入下载链接
n=n+1
if n%4!=0:
sleep(30)
else:
sleep(150)
sleep(10000)
driver.quit()
在代码中,我设置了在浏览器地址栏填入一个链接就让程序休息30秒,每填入4个数据链接就休息150秒,这是因为程序不会等待浏览器下载完已有的数据才进行下一个,所以需要让程序休息一会,防止浏览器同时下载的数据过多造成下载失败(根据需要自己设置)。
在数据链接全部填入浏览器后,让程序休息10000再退出浏览器,确保数据完全下载完成(根据需要自己设置)。
我这里数据下载链接的文本文档的样式如下(其实就是每一行一个数据链接):
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200501T011005_20200501T011305_20200502T043959_0179_057_359_2340_LN1_O_NT_002.zip
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200501T011305_20200501T011605_20200502T044021_0179_057_359_2520_LN1_O_NT_002.zip
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200501T025104_20200501T025404_20200502T062156_0179_057_360_2340_LN1_O_NT_002.zip
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200502T022153_20200502T022453_20200503T054151_0179_057_374_2160_LN1_O_NT_002.zip
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200502T022453_20200502T022753_20200503T054214_0179_057_374_2340_LN1_O_NT_002.zip
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200502T022753_20200502T023053_20200503T054237_0179_057_374_2520_LN1_O_NT_002.zip
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200503T015542_20200503T015842_20200504T064438_0179_058_003_2160_LN1_O_NT_002.zip
https://oceandata.sci.gsfc.nasa.gov/sentinel/getfile/S3A_OL_1_EFR____20200503T015842_20200503T020142_20200504T064458_0179_058_003_2340_LN1_O_NT_002.zip
3.结果展示
注意看页面底部,数据已经加入到浏览器中开始下载了。
下载速度也挺好:
开心下载吧!