AERONET AOD 数据自动化下载 + PYTHON + SELENIUM
目录
5.05更新 增加FMF、SSA数据下载(见GitHub)
4.10更新 通过CURL、WGET等方式下载目标数据
获取下载地址
Using Tools to Save Web Output as a File
Wget
Curl
AERONET AOD 数据下载
利用 PYTHON + SELENIUM 自动化下载中国站点数据
获得站点URL列表
获取站点数据时间
下载数据
写在前面的小结:预检索动态资源,正则化工具匹配标签。
完整代码见:SakuraSong001/spider4remotedata (github.com)
项目另含哨兵五号、parasol数据批量自动化下载工具。
7.21增加多线程并行下载和selenium后台运行。
5.05更新 增加FMF、SSA数据下载(见GitHub)
针对SSA、FMF等产品的网站网页解析进行修改,实现自动化批量下载。
4.10更新 通过CURL、WGET等方式下载目标数据
AErosol RObotic NETwork (AERONET)下载工具提供现成的下载地址编辑规则如下所示。检索结果为HTML格式,可根据需要生成下载链接,结果格式需要再一次转换。
AOD AND SDA : Data - Aerosol Robotic Network (AERONET) Homepage (nasa.gov)
获取下载地址
AOD、SDA、TOT等数据下载地址的可选参数如下表所示,可利用网站地图工具和BeautifulSoup工具,获得目标区域网站列表,根据地址规则生成下载地址列表后,通过curl或wget工具实现批量下载。
Table 1: Explanation and Values for Mandatory and Optional Web Service Parameters
Mandatory Parameters | Explanation | Values |
---|---|---|
year,month,day | Starting time moment (year= 1992 to present), (month=1 to 12), (day = 1 to max num, depends on month) |
Year: 1993 to present (must be 4-digits) Month: 1 to 12 Day: 1 to max_day_of_month |
AVG | Data Format |
All points: AVG=10 Daily average: AVG=20 |
[data_type] | Data Types (See Table 2) | [data_type]=1 |
Optional Parameters | ||
year2,month2,day2 | Ending time moment** |
Year: 1993 to present (must be 4-digits) Month: 1 to 12 Day: 1 to max_day_of_month **if year2,month2, and day2 are omitted, then the current day is assumed |
hour, hour2 | Specified beginning (hour) and ending hour (hour2) |
Hour: 0 to 23 if not specified, then the hour is set to zero; time2 is incremented to next day and hour2=0 |
site |
AERONET site name |
Exact match of AERONET database name If none specified, then all sites are searched for data during the time interval specified AERONET Site Name List |
lat1,lon1,lat2,lon2 | Bounding Box ** |
lat1,lon1 - Lower Left **values must be in decimal degrees (including the decimal) |
lunar_merge | Enable Lunar AOD (Provisional) Only Download |
0 - No Lunar |
if_no_html | Determine whether html formatting is printed |
0 - HTML formatting printed (default) 1 - No HTML formatting printed |
Table 2: Explanation of Data Types for the Web Service
Data Types | Explanation |
---|---|
AOD10 | Aerosol Optical Depth Level 1.0 |
AOD15 | Aerosol Optical Depth Level 1.5 |
AOD20 | Aerosol Optical Depth Level 2.0 |
SDA10 | SDA Retrieval Level 1.0 |
SDA15 | SDA Retrieval Level 1.5 |
SDA20 | SDA Retrieval Level 2.0 |
TOT10 | Total Optical Depth based on AOD Level 1.0 (all points only) |
TOT15 | Total Optical Depth based on AOD Level 1.5 (all points only) |
TOT20 | Total Optical Depth based on AOD Level 2.0 (all points only) |
Using Tools to Save Web Output as a File
Wget
wget --no-check-certificate -q -O test.out "https://aeronet.gsfc.nasa.gov/cgi-bin/print_web_data_v3?site=Cart_Site&year=2000&month=6&day=1&year2=2000&month2=6&day2=14&AOD15=1&AVG=10"
Curl
curl -s -k -o test.out "https://aeronet.gsfc.nasa.gov/cgi-bin/print_web_data_v3?site=Cart_Site&year=2000&month=6&day=1&year2=2000&month2=6&day2=14&AOD15=1&AVG=10"
AERONET AOD 数据下载
AErosol RObotic NETwork (AERONET)是由NASA 和 LOA-PHOTONS (CNRS) 联合建立的地基气溶胶遥感观测网,提供对不同气溶胶状态下的光谱气溶胶光学深度(AOD),反演产物和可沉淀水的全球分布式观测。现行版本 3 AOD 数据提供:级别 1.0(未筛选)、级别 1.5(云筛选和质量控制)和级别 2.0(质量保证)。
官网地址:Aerosol Robotic Network (AERONET) Homepage (nasa.gov)
Aeronet 网站支持灵活筛选条件,可根据需求下载特定时间、级别、站点的数据。同时可通过网页提供的筛选功能筛选符合特定条件的数据。
例如下载 2012年 Alboran 站点的 AOD1.5 数据,点击 2012 - level 1.5 - Alboran 进入站点数据详情页面,点击 AOD Level 1.5 进入数据请求下载页面,点击 Accept 即可下载数据。
利用 PYTHON + SELENIUM 自动化下载中国站点数据
获得站点URL列表
首先通过网站提供的地图筛选工具,大致选择中国范围,并将页面另存为本地HTML文件,利用BEAUTIFULSOUP解析页面获得站点列表。利用正则化工具筛选、获得所有站点URL,并通过父节点获得站点名称、经纬度等信息。
def get_stations(area_file):result = []pattern = r'https\:\/\/aeronet\.gsfc\.nasa\.gov\/cgi\-bin\/data\_display\_aod\_v3\?site\=.+'# 本地页面chinaAreaPage = r'AERONET Data Display Interface - WWW DEMONSTRAT.html'soup = BeautifulSoup(open(chinaAreaPage, 'r', encoding='utf-8').read(), 'html.parser')aList = soup.find_all('a')for item in aList:sHref = item.get('href')if re.match(pattern, str(sHref)):station = re.sub(r'\n', '', item.get_text())geoInfo = re.sub(r'\n+.+\(\s', r'(', item.parent.get_text())response = session.get(sHref, headers=header)beautifulSoup = BeautifulSoup(response.text, 'html.parser')pageUrl = beautifulSoup.find('a', text=re.compile(r'More AERONET Downloadable Products\.{3}')).get('href')date = beautifulSoup.find(text=re.compile(r'Start Date.+')).split('-')start_year = re.sub(r'\;.+', '', date[2])latest_year = date[4]result.append([station, geoInfo, pageUrl, start_year, latest_year])# print(result, file=open(area_file, 'w', encoding='utf-8'))result = np.array(result)dataframe = pd.DataFrame({'station': result[:, 0], 'geoInfo': result[:, 1], 'pageUrl': result[:, 2], 'start_year': statList[:, 3],'latest_year': result[:, 4]})dataframe.to_csv(area_file, index=False, sep=',', encoding='utf-8')return result
获取站点数据时间
根据给定时间范围筛选站点、并获取站点数据的有效时间节点。
if '2005' <= first <= '2012' or '2005' <= latest <= '2012' or (first <= '2005' and latest >= '2012'):# 不在此时间范围内的直接跳过print('\n')begin = end = '0'statUrl = 'https://aeronet.gsfc.nasa.gov/cgi-bin/' + statHref.replace('®', '&re')driver.get(statUrl)time.sleep(3)ele = driver.find_element(By.XPATH, '//*[@id="Year1"]')options = ele.find_elements(By.TAG_NAME, 'option')for option in options:# print(option.get_attribute('value'))# print(option.text)if option.text >= '2013':breakif begin == '0' and '2005' <= option.text:begin = option.textif end < option.text:end = option.text# -- end for options --if begin == '0' or end == '0':print('wrong time', stat, first, latest, begin, end, statUrl)continueprint(stat, first, latest, begin, end, statUrl)
下载数据
由于aeronet网站的特殊设置,部分数据需要先检索才可以下载,否则按照正确的下载地址也会提示 HTTPError: 404 not found。
# 模拟检索动作
statUrl = 'https://aeronet.gsfc.nasa.gov/cgi-bin/' + statHref.replace('®', '&re')
driver.get(statUrl)
time.sleep(3)
select1 = Select(driver.find_element(By.XPATH, '//*[@id="Year1"]'))
select1.select_by_visible_text(str(year))
select2 = Select(driver.find_element(By.XPATH, '//*[@id="Year2"]'))
select2.select_by_visible_text(str(year))
try:aod15_checkbox = driver.find_element(By.NAME, 'AOD15')aod15_checkbox.click()
except NoSuchElementException:print('No such aod 1.5 ', year, url)break
submit = driver.find_element(By.NAME, 'Submit')
submit.click()
time.sleep(30)
# download file
for year in range(int(begin), int(end) + 1):# print(year)filename = '{0}0101_{0}1231_{1}.zip'.format(year, stat)filepath = r'F:\WORKSPACE\DBN-PARASOL\aeronet data 1.5\{}'.format(filename)url = 'https://aeronet.gsfc.nasa.gov/zip_files_v3/{}'.format(filename)if os.path.exists(filepath):print('exist ', year, url)continuetry:opener = urllib.request.build_opener()opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46'), ('Cookie', '_ga=GA1.2.479127296.1609393316; _ga=GA1.4.479127296.1609393316'),('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9')]urllib.request.install_opener(opener)urllib.request.urlretrieve(url, filepath)print('Done ', year, url)except urllib.error.HTTPError:print('Not Found', year, url)print(stat, year, url, file=open(r'F:\WORKSPACE\DBN-PARASOL\aeronet data 1.5\notfound.txt', 'a', encoding='utf-8'))
批量自动加载结果:
AERONET AOD 数据自动化下载 + PYTHON + SELENIUM相关推荐
- 自动化测试之Python+selenium
Selenium 1.什么是自动化测试? 通俗定义:编程测试,编写一段程序来测试另外一个程序,即将测试任务交给计算机来完成. 广义定义:所有需要借助于工具进行辅助测试的方法,都可以称之为自动化测试. ...
- 这4款数据自动化探索 Python 神器,解决99%的数据分析问题!
来源:Python学习与数据挖掘 探索性数据分析是一种非常重要的数据探索技术,用于了解数据的各个方面,这是执行任何机器学习或深度学习任务之前最重要的步骤之一. 探索性数据分析可以帮助识别明显的错误,区 ...
- Web自动化-python+selenium原理简介
web自动化应用场景:12306购票网站,招聘网站的职位信息等 selenium是一个Web应用的自动化框架. 通过它,我们可以通过程序,在web界面进行操作:比如点击界面按钮,输入文本等.还能够从w ...
- python读取数据库绘图_获取博客积分排名,存入数据库,读取数据进行绘图(python,selenium,matplotlib)...
该脚本的目的:获取博客的排名和积分,将抓取时间,排名,积分存入数据库,然后把最近的积分和排名信息进行绘图,查看积分或者排名的变化情况. 整个脚本的流程:是利用python3来编写,利用selnium获 ...
- python清空文本框_WEB自动化——解决python selenium使用clear清除文本框内容失效的问题...
页面自带输入框默认值时,想要修改输入框的内容,使用clear()后再使用send_keys(),结果无法起到清除文本框内容的作用,反而会在输入框默认值后面追加内容. 解决方法: 一.通过键盘的快捷键进 ...
- python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...
在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config ...
- Google Earth Engine(GEE)——MODIS/006/MCD19A2气溶胶数据AOD数据去云去雪分析(北京市为例)
上一次我们提到了计算关于诸天AOD数据的下载,用的是MODIS数据产品,里面包含了逐日的AOD数据的最大最小值标准差.方差和均值进行统计分析. (526条消息) Google Earth Engine ...
- python+selenium爬虫自动化批量下载文件
一.项目需求 在一个业务网站有可以一个个打开有相关内容的文本,需要逐个保存为TXT,数据量是以千为单位,人工操作会麻木到崩溃. 二.解决方案 目前的基础办法就是使用python+selenium自动化 ...
- Python selenium与pyautogui控制浏览器实现modis数据自动下载
目录 序言: 准备工作: 基本思路: 完整代码: 序言: 上次提到通过modis连接下载数据的方式有很多,本文选择selenium模拟登录的方式通过谷歌浏览器下载,但是并不推荐这种方法,只是恰好学习了 ...
最新文章
- Matplotlib 绘图秘籍
- 线段树 HDU 3397
- 微信小程序抖音实战-支持手机播放小视频
- 操作系统实验 文件复制/复制文件
- 如何设计接口测试用例?(文末送接口测试用例模板)
- Windows二进制文件合并工具
- 财务内部收益率用计算机怎么算,​财务内部收益率怎么算
- C# word文档转换成PDF格式文档
- 脉冲星 6 月脉动 | Pulsar Summit 北美峰会圆满结束,ApacheCon 议程官宣
- MAMP Pro 6 mac强大的本地服务器环境软件套装
- Unreal Engine4(虚幻4)学习心得-材质
- cin和cout的使用
- linux和aws需要什么配置电脑,安装和配置 AWS CloudHSM 客户端 (Linux) - AWS CloudHSM
- android游戏出现闪退问题怎么解决方法,游戏出现频繁闪退解决方法参考 游戏频繁闪退怎么办...
- 按数字递增批量重命名文件的批处理
- Magento 屏蔽国内IP,允许国内特定地区的IP访问
- SonicWALL防火墙配置NAT Policy
- 收到骗子的短信后......
- 如何酷酷的找回迅雷私人空间的密码
- 线性代数之矩阵我们需要了解的知识点(增广矩阵矩阵的迹 矩阵的秩阶梯型...)
热门文章
- 苹果6访问限制密码4位_破解6位密码只需4秒!教你3步设置强密码挡住黑客
- 如何搭建Tesla Occupancy Network的一个基线?
- 华为鸿蒙如何内测,第一批华为鸿蒙内测机型出炉!有你用的手机吗?
- mbot机器人编程课件_mbot机器人微视频案例——含PPT、源程序、案例效果视频共12课(木果创客独家资源)...
- bugku ctf PHP_encrypt_1(ISCCCTF) (fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=)
- 三丰云,免费云服务器
- Policy Gradients
- 【字节青训营】Day1 HTML+CSS笔记
- 史蒂芬柯维经典之作《第三选择》听后感和思维导图
- react native 的引导页只启动一次