00. 写在前面:

  由于最近学习方面需要用到NSIDC(美国冰雪数据中心)的数据进行计算,但是手工下载又特别耗费时间,需要一个一个去点击,所以我尝试着去写一个小爬虫获取所需数据。
  对所有需要在NSIDC下数据的科研工作者可能会有点左右,233333
  
  欢迎大家指出问题,共同学习。我只是一个萌新。。。
  
  所用到的工具:pycharm +python2.7.13 + BeautifulSoup
  
OK,正式开始今天的工作!

01. 工作开始前的分析工作:

  确定我们需要下载的数据网站。http://nsidc.org/data/GLAH12(GLAS/ICESat L2 Antarctic and Greenland Ice Sheet Altimetry Data (HDF5), Version 34)
  哈哈哈哈哈哈哈哈哈哈哈, 不要猜测我要用这些数据做什么拉。

  点击右边的下载,然后会发现跳转到了另一个网站,也就是合作伙伴EARTHDATA 的登陆网站
  
  
  登陆过后就会跳转到下载数据的网页,每天的数据按照日期排列,需要下载所有日子的话,就得一天一天点进去下载,贼麻烦!!!
  
  
  
  这样,我们就知道了下载这个数据的一个流程,然后我们需要的,就是如何利用程序实现这个过程。而这个过程中最难得,应该就是模拟登陆的过程。这里应该有两个解决办法:(1)利用cookie模块来实现;(2)利用requests.session来实现 (我也不知道这么说对不对,但是的确是用了不同的模块。233333
  这里我们采用第二种方法(我的GitHub里面下载另一种数据采用的是第一种方法,大家可以看看),那么我们观察网页url的特征。发现只是在后面日期作为标签改变url。
  (为了后面方便,我这里直接在网站源码里面保存这部分日期到本地了,哈哈哈哈,投机取巧了,其实完全可以在请求网站后,从源码里面获取,我主要还是懒。)

  https://n5eil01u.ecs.nsidc.org/GLAS/GLAH12.034/2003.02.20/https://n5eil01u.ecs.nsidc.org/GLAS/GLAH12.034/2003.02.21/https://n5eil01u.ecs.nsidc.org/GLAS/GLAH12.034/2003.02.22/

02. 正式的编程工作:

  (1)获取网站url.

with open(datetime, 'r') as fa:for line in fa:datanum = line[:-1]url = 'https://n5eil01u.ecs.nsidc.org/GLAS/GLAH12.034/{}/'.format(datanum)

  (2)设置请求的默认参数

  USER_AGENTS = ["Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)","Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)","Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)"]headers = {'User-agent': random.choice(USER_AGENTS),'Connection': 'keep - alive','Accept-Encoding': 'gzip, deflate','Host': 'n5eil01u.ecs.nsidc.org'}
with requests.Session() as session:session.auth = (username, password)r1 = session.request('get', url)

(3)模拟访问
  由于这里是一个get请求,所以直接用session.get 即可。然后利用Beautifulsoup 解析。

r1 = session.request('get', url)
r = session.get(r1.url, auth=(username, password))
soup = BeautifulSoup(r.content, 'lxml')

利用开发者工具(F12)可以看到,我们需要的文件夹,全部位于 tr 标签里面, 而我们需要的.H5 文件在对应td标签下。这样就可以很容易获得我们所需的内容了。即对应的soup.find_all("tr")soup.find_all("td") 即可

(4)下载文件
  其实在python里面下载一个文件并不算复杂。我们在前面已经已经获得了对应文件的下载路径,直接写入文件即可。

with open(filename, 'wb') as f:for chunk in r.iter_content(100):f.write(chunk)

这样我们就成功下载了一个所需文件。接下来只要构成批量循环就可以。剩下的就靠大家自己咯。

03. 写在后面:

  作为一个学遥感的萌新,各种下数据真是让我伤透了心,整个时间有一半在找数据和下数据。幸好有了程序思想,哈哈哈哈,可以偷懒去看番了。

  源码位置,除了ICESat还有用另一种方法下载的MODIS产品(偷偷让大家进去下我的GitHub,哈哈哈哈):
https://github.com/moonlighf/Leetcode/tree/master/02.NSIDC_BatchDownload

[遥感]利用python爬虫获取美国冰雪数据中心的数据相关推荐

  1. Python爬虫 | 利用python爬虫获取想要搜索的数据

    这篇文章主要介绍了利用Python爬虫采集想要搜索的信息(利用某du的接口实现)并且处理掉它的反爬手段,文中示例代码很详细,具有一定的学习价值,感兴趣的小伙伴快来一起学习吧. ☀️新人小白博主

  2. 编写python爬虫 获取中华英才网全网工资数据

    做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...

  3. 利用python爬虫可视化分析当当网的图书数据

    导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 **Python版本:**3.6.4 相关模块: requests模块: bs4模块: wordclo ...

  4. 利用python爬虫获取中国最好大学排名和B站排行榜视频

    笔者刚学到python爬虫 无聊玩一玩 功能描述: 输入url 获取一系列的数据 在命令板输出 技术路线:requests>bs4 步骤: List item 先从网上找到中国大学排名的url中 ...

  5. 如何利用python爬虫获取网易云音乐某个歌手简介_Python 爬虫获取网易云音乐歌手信息...

    今天就先带大家爬取网易云音乐下的歌手信息并把数据保存下来. 爬取结果 环境 语言:Python 工具:Pycharm 导包 BeautifulSoup:用来解析源码,提取需要的元素. selenium ...

  6. 利用Python爬虫获取招聘网站职位信息

    当你学会使用Python爬虫之后就会发现想要得到某些数据再也不用自己费力的去寻找,今天小千就给大家介绍一个很实用的爬虫案例,获取Boss直聘上面的招聘信息,同学们一起来学习一下了. Boss直聘爬虫案 ...

  7. python爬虫beautifulsoup爬当当网_利用python爬虫可视化分析当当网的图书数据!

    导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 Python版本:3.6.4 相关模块: requests模块: bs4模块: wordcloud模块 ...

  8. 利用python爬虫获取豆瓣读书数据建立书单

    0. 写在前面 网络爬虫: A Web crawler, sometimes called a spider, is an Internet bot that systematically brows ...

  9. 利用python爬虫(part6)--用Xpath匹配带来的数据合并问题

    学习笔记 如果在本Blog里看到拼音,那可能是由于第一次shen he没通过被逼的,葛优躺,不知所措. 用Xpath匹配带来的数据合并问题 在我以往的爬虫案例中(比如:X凰X闻案例),我用Xpath分 ...

最新文章

  1. CSDN安全设置需改进
  2. jquery实现对radio赋值
  3. shell date常用运算命令
  4. 小米10解锁bl跳过168_2021年小米红米手机官方解锁BL详细教程+跳过168小时方法合集...
  5. 2017阿里技术年度精选(全)
  6. (转) PowerDesigner中Table视图同时显示Code和Name
  7. 了解这些后设计输入框原来这么简单
  8. 热点科普 | 自监督视觉特征学习
  9. win7下安装cygwin工具
  10. 从网络上下载文件到本地
  11. 嵌入式Linux--使用libpng库解码png图片
  12. SEO分析关键词策略
  13. vue html parser,vue-eslint-parser
  14. 论文学习——基于滑动窗口预测的水位时间序列异常检测
  15. 快速刷通PWN的第一天
  16. PCB及电路抗干扰措施
  17. 聚焦东风汽车,解锁企业上云的正确姿势
  18. 手把手教你用 Pygame 复刻游戏
  19. 存储调研:BeeGFS并行文件系统体系结构
  20. 京东 appck 一键转换 cookie

热门文章

  1. Pointcut注解表达式@target、@annotation、@within、this、target、within等
  2. Github深度学习面试题答案
  3. Android自定义控件(二)
  4. 昆明北大附中2021高考成绩查询,北大附中云南实验学校2021年排名
  5. 微信接收不到企业微信消息推送
  6. 【论文阅读】SteganoGAN: High Capacity Image Steganography with GANs
  7. XBOX360新手扫盲
  8. c语言两个小数加减乘除,加减乘除英语 c语言计算两个数的加减乘除?
  9. 2017百度校园招聘编程题
  10. 模型相关术语:Model vs DTO vs Entity vs Value Object vs Pojo vs Bean