目录

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
lat2,lon2 - Upper Right

**values must be in decimal degrees (including the decimal)

lunar_merge Enable Lunar AOD (Provisional) Only Download

0 - No Lunar
1- Lunar Data (Provisional)

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相关推荐

  1. 自动化测试之Python+selenium

    Selenium 1.什么是自动化测试? 通俗定义:编程测试,编写一段程序来测试另外一个程序,即将测试任务交给计算机来完成. 广义定义:所有需要借助于工具进行辅助测试的方法,都可以称之为自动化测试. ...

  2. 这4款数据自动化探索 Python 神器,解决99%的数据分析问题!

    来源:Python学习与数据挖掘 探索性数据分析是一种非常重要的数据探索技术,用于了解数据的各个方面,这是执行任何机器学习或深度学习任务之前最重要的步骤之一. 探索性数据分析可以帮助识别明显的错误,区 ...

  3. Web自动化-python+selenium原理简介

    web自动化应用场景:12306购票网站,招聘网站的职位信息等 selenium是一个Web应用的自动化框架. 通过它,我们可以通过程序,在web界面进行操作:比如点击界面按钮,输入文本等.还能够从w ...

  4. python读取数据库绘图_获取博客积分排名,存入数据库,读取数据进行绘图(python,selenium,matplotlib)...

    该脚本的目的:获取博客的排名和积分,将抓取时间,排名,积分存入数据库,然后把最近的积分和排名信息进行绘图,查看积分或者排名的变化情况. 整个脚本的流程:是利用python3来编写,利用selnium获 ...

  5. python清空文本框_WEB自动化——解决python selenium使用clear清除文本框内容失效的问题...

    页面自带输入框默认值时,想要修改输入框的内容,使用clear()后再使用send_keys(),结果无法起到清除文本框内容的作用,反而会在输入框默认值后面追加内容. 解决方法: 一.通过键盘的快捷键进 ...

  6. python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...

    在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config ...

  7. Google Earth Engine(GEE)——MODIS/006/MCD19A2气溶胶数据AOD数据去云去雪分析(北京市为例)

    上一次我们提到了计算关于诸天AOD数据的下载,用的是MODIS数据产品,里面包含了逐日的AOD数据的最大最小值标准差.方差和均值进行统计分析. (526条消息) Google Earth Engine ...

  8. python+selenium爬虫自动化批量下载文件

    一.项目需求 在一个业务网站有可以一个个打开有相关内容的文本,需要逐个保存为TXT,数据量是以千为单位,人工操作会麻木到崩溃. 二.解决方案 目前的基础办法就是使用python+selenium自动化 ...

  9. Python selenium与pyautogui控制浏览器实现modis数据自动下载

    目录 序言: 准备工作: 基本思路: 完整代码: 序言: 上次提到通过modis连接下载数据的方式有很多,本文选择selenium模拟登录的方式通过谷歌浏览器下载,但是并不推荐这种方法,只是恰好学习了 ...

最新文章

  1. Matplotlib 绘图秘籍
  2. 线段树 HDU 3397
  3. 微信小程序抖音实战-支持手机播放小视频
  4. 操作系统实验 文件复制/复制文件
  5. 如何设计接口测试用例?(文末送接口测试用例模板)
  6. Windows二进制文件合并工具
  7. 财务内部收益率用计算机怎么算,​财务内部收益率怎么算
  8. C# word文档转换成PDF格式文档
  9. 脉冲星 6 月脉动 | Pulsar Summit 北美峰会圆满结束,ApacheCon 议程官宣
  10. MAMP Pro 6 mac强大的本地服务器环境软件套装
  11. Unreal Engine4(虚幻4)学习心得-材质
  12. cin和cout的使用
  13. linux和aws需要什么配置电脑,安装和配置 AWS CloudHSM 客户端 (Linux) - AWS CloudHSM
  14. android游戏出现闪退问题怎么解决方法,游戏出现频繁闪退解决方法参考 游戏频繁闪退怎么办...
  15. 按数字递增批量重命名文件的批处理
  16. Magento 屏蔽国内IP,允许国内特定地区的IP访问
  17. SonicWALL防火墙配置NAT Policy
  18. 收到骗子的短信后......
  19. 如何酷酷的找回迅雷私人空间的密码
  20. 线性代数之矩阵我们需要了解的知识点(增广矩阵矩阵的迹 矩阵的秩阶梯型...)

热门文章

  1. 苹果6访问限制密码4位_破解6位密码只需4秒!教你3步设置强密码挡住黑客
  2. 如何搭建Tesla Occupancy Network的一个基线?
  3. 华为鸿蒙如何内测,第一批华为鸿蒙内测机型出炉!有你用的手机吗?
  4. mbot机器人编程课件_mbot机器人微视频案例——含PPT、源程序、案例效果视频共12课(木果创客独家资源)...
  5. bugku ctf PHP_encrypt_1(ISCCCTF) (fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=)
  6. 三丰云,免费云服务器
  7. Policy Gradients
  8. 【字节青训营】Day1 HTML+CSS笔记
  9. 史蒂芬柯维经典之作《第三选择》听后感和思维导图
  10. react native 的引导页只启动一次