**

更新

**

原来的网址挂掉了,前面的爬虫代码不能用了,在此贴出新网站的爬虫代码。具体的爬取过程跟之前的类似,不过新网站的下载链接里多了一个文件所占字节大小,需要从响应里提取出来放到链接里。

import urllib.request
import urllib.parse
import datetimedef get_url(year, month, day):"""输入日期,返回当天内 GOCI L1B数据下载链接(列表)"""# 请求头url = f'http://kosc.kiost.ac.kr/gociSearch/list.nm?menuCd=11&lang=ko&url=gociSearch&dirString=/COMS/GOCI/L1/{year}/{month}/{day}/L1B'response = urllib.request.urlopen(url)html = response.read().decode('utf-8')urls = []for num in range(8):# 提取文件名try:index0 = html.index(f'realPath" name="downloadVOList[{num}].realPath" value="') + len('realPath" name="downloadVOList[1].realPath" value="')index1 = index0 + len('/download/downService.do?fileName=/home/goci/nfsdb/COMS/GOCI/L1/2012/01/02/L1B/COMS_GOCI_L1B_GA_20120102011640.he5.zip')filename = html[index0:index1]# 提取文件大小index0 = html.index(f'class="fSize" name="downloadVOList[{num}].fSize" value="') + len('class="fSize" name="downloadVOList[1].fSize" value="')index1 = index0 + len('786513032')filesize = int(html[index0:index1]) - 1# 组合为链接url = f'http://kosc.kiost.ac.kr/{filename}&_Html5=true&_StartOffset=0&_EndOffset={filesize}'urls.append(url)except Exception:print(f'缺少{year}_{month}_{day}_{num}')continuereturn urlsdef days_to_month(year, days):dd = datetime.datetime.strptime(str(year) + str(days), "%Y%j")mon, day = str(dd.timetuple().tm_mon), str(dd.timetuple().tm_mday)return year, mon, day# years = [2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]
years = [2021]for year in years:filename = f'{year}.txt'startday = 1endday = 366if year == 2011:startday = 91if year in [2012, 2016, 2020]:endday = 367with open(filename, 'w') as f:for day in range(startday, endday):year, month, day = days_to_month(year, day)month = '%.02d' % int(month)day = '%.02d' % int(day)try:urls = get_url(year, month, day)for url in urls:f.write(url + '\n')except Exception:print(f'{year}_{month}_{day}链接无法打开')

=====================================================================================

以下为原文章:
GOCI数据下载地址有两个,一个是NASA的 ocean color 网站:https://oceancolor.gsfc.nasa.gov/;二是韩国的官网:http://kosc.kiost.ac.kr/eng/p10/kosc_p11.html。其中ocean color 需科学上网,因心疼流量,最终选择了韩国的网站。

本篇博文的主要内容包括两个:一是GOCI数据链接的批量抓取(附代码);二是提取链接后的批量下载。

1、GOCI数据链接批量抓取

数据链接抓取不需太深厚的爬虫功底,入门即可。如嫌麻烦,在此附上2011.04-2020.04的L1级全部下载链接(链接:https://pan.baidu.com/s/1pbC9lV4g4KoyycdvhQw07Q 提取码:j3d8 ),但2020.04以后的数据和其他类型就需自己搞了。

仔细观察下载链接,其实是有一定的规律可循,因为网站前缀是一样的,而GOCI文件名的命名有其规则。本想直接按照规律生成这些链接,但发现每个文件名的最后两个数字找不到规律,在38-42之间波动。所以无奈还是得从网站上爬取,以下为爬取步骤及代码。

1)kosc.kiost.ac.kr 网页解析
打开官网,进入数据搜索页面,右键“检查”,在弹出的界面中选择network,然后在数据搜索页面点击search,此时右侧会出现一个list.php,所需要的下载链接则全部在这里了。

2)数据时间范围和类型选择

如下图红色框,数据范围和类型的选择主要依靠这四个keys,可根据自己需要选择时间范围和L1/L2数据。

3)爬取代码

import urllib.request
import urllib.parse
import reurl = 'http://kosc.kiost.ac.kr/eng/p10/list.php'# 四个关键词,根据需要调整
data = {}
data['src1'] = 'GOCI'
data['src2'] = '1.0/L1B'
data['start_date'] ='2011-04-01'
data['end_date'] = '2020-04-10'data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read().decode('utf-8')# 正则表达式,找到response中全部的文件名
# 如需下载L2级数据,文件名前缀需做相应修改
list_GOCI = re.findall(r"='COMS_GOCI_L1B_GA_20[0-2][0-9][0-1][0-9][0-3][0-9]0[0-7]16[0-9][0-9].he5.zip", html)# 将获取的链接按照年分别存放
def GeneralList(list_GOCI, year_num):link_list = []for each in list_GOCI:i = each[2:]year = i[17:21]month = i[21:23]day = i[23:25]link = 'http://222.236.46.45/nfsdb/COMS/GOCI/1.0/' + str(year) + '/' + str(month) + '/' + str(day) + '/' + 'L1B/' + str(i)if str(year) == str(year_num):link_list.append(link)return link_list# 将各个年份链接写入.txt
for year in range(2011, 2021):link_list = GeneralList(list_GOCI, year)name = 'GOCI_Download_list' + str(year) + '.txt'with open(name, 'w') as f:for i in link_list:f.write(i + '\n')

最终生成如下文件:

2、批量下载

获取上述链接后,因官网服务器不需科学上网、注册登录等,下载就很简单了。我是直接将链接批量复制到迅雷,下载速度基本在3-10 M/s,基本能满足需求。也可选择IDM等下载工具。

GOCI数据批量下载相关推荐

  1. 大数据批量下载文件 代码

    大数据批量下载文件 代码 # # 大数据批量下载文件 from multiprocessing import Process import os import pandas as pd import ...

  2. Harvard Dataverse 数据批量下载

    最近看论文,看到了自己需要的数据,就想着下载下来,结果发现这个东西并不好下载,也可能是自己的知识存储不够,捣鼓了一天,终于下载下来了.这里记录一下,方便以后查阅. Harvard Dataverse ...

  3. 天文数据批量下载笔记

    数据批量下载笔记 一.astroquery 很多大型巡天项目都提供了下载数据的API方法,因此利用python脚本批量下载数据成为可能.基于已有的API(或者SQL)方法,astroquery整合了多 ...

  4. ECMWF等大气数据批量下载(Python API)详细步骤

    ECMWF等大气数据批量下载(Python API) 遥感方向做热红外温度反演,不可避免的要用到大气廓线数据,大气数据具有实时性,比如2018年9月1日的早上8点的影像,为了提高反演精度就需要用到时间 ...

  5. GPM数据批量下载教程

    GPM数据批量下载教程 1. GPM数据产品简介 2 查找数据 3. 下载 3.1. 授权 3.1.1 通过 `.netrc` 文件授权 3.1.2 *通过浏览器授权(通过 `.netrc` 文件授权 ...

  6. MODIS冰雪数据批量下载

    MODIS冰雪数据批量下载之Python Script 相信有很多的朋友在研究极地(南北两极)的冰雪吧,下数据可能对于某些大小同行来说是一个头疼的问题,本文在这里就介绍一种批量爬取数据的方法. 数据下 ...

  7. Sentinel-2 (哨兵2号) 数据批量下载教程 [python]

    Sentinel-2 [哨兵2号] 数据批量下载教程 [python] 1. 选择数据 2. 数据下载 2.1 下载链接文件 2.2 安装Python及data_downloader包 2.3 创建. ...

  8. 1、EC气象数据批量下载

    EC气象数据批量下载 前言 一.前期准备 1. 配置Python环境 2. 安装依赖库: 3. 注册EC账户并获得Key 3.1 注册账户 3.2 获取API信息 4. 选择数据 二.编写脚本开始下载 ...

  9. 使用Google Earth Engine (GEE)实现MODIS数据批量下载

    使用Google Earth Engine GEE实现MODIS数据批量下载 前言 下载数据代码 批量执行run任务 关注公众号,分享GIS知识.ArcGIS教程.SCI论文与科研日常等 前言 上图是 ...

最新文章

  1. Android TextView 数字后面追加2个0 或者保留小数点后面2位
  2. 2020德勤面试开始了吗_2020下半年教师资格证面试时间已出!12月10日开始报名
  3. React后台管理系统-商品列表搜索框listSearch组件
  4. DataGridView新特色、常用操作
  5. Redis scan命令原理
  6. Sql Server 常用日期格式
  7. kali中wireshark打开后错误
  8. WPF 修改(优化)Menu菜单的样式
  9. 功放音量调节原理_玩汽车音响,功放和喇叭,应该如何做好匹配?
  10. Spring mvc4 + ActiveMQ 整合
  11. 【转】一个安全测试的CheckList
  12. Linux中mongodb定时远程备份
  13. An ac a day,keep wa away
  14. 教你怎么录制电脑内部发出的声音
  15. 列联表分析——独立性检验(卡方检验)
  16. 12306暴SQL注入漏洞?!这下乐大发了
  17. calc桌面计算机,Calc1(桌面计算器)
  18. INDEMIND:多传感器融合,机器人的必由之路
  19. 运用ARCGIS制作行政区划数据图表
  20. sed正则表达式替换字符方法

热门文章

  1. 使用openpyxl进行多个excel数据合并
  2. VC ADO访问MySql数据库(MySql数据库初探二)
  3. 程序员最喜欢的4个编辑器!码农出品,必属精品!
  4. 人体自身的神奇补肾法 ——你在外面花多少钱都学不到的
  5. 大学计算机excel函数课件,《Excel函数教程》PPT课件.ppt
  6. Web——CSS页面背景
  7. redis分布式锁解决方案
  8. 阿里云OSS 图片处理
  9. 7、任务分配-任务分派其他人
  10. SpringCache之@CacheEvict注解的使用说明