使用python3批量下载rbsp数据的示例代码


Posted in Python onDecember 20, 2019

1. 原始网站
https://www.rbsp-ect.lanl.gov/data_pub/rbspa/

2. 算法说明
进入需要下载的数据所在的目录,获取并解析该目录下的信息,解析出cdf文件名后,将cdf文件下载到内存中,随后保存到硬盘中。程序使用python3实现。

3. 程序代码

#!/bin/python3
# get the rbsp data
# writen by Liangjin Song on 20191219
import sys
import requests
from pathlib import Path

# the url containing the cdf files
url="https://www.rbsp-ect.lanl.gov/data_pub/rbspa/ECT/level2/2016/"
# local path to save the cdf file
path="/home/liangjin/Downloads/test/"

def main():
  re=requests.get(url)
  html=re.text
  cdfs=resolve_cdf(html)

  ncdf=len(cdfs)
  if ncdf == 0:
    return

  print(str(ncdf) + " cdf files are detected.")

  i=1
  # download 
  for f in cdfs:
    rcdf=url+f
    lcdf=path+f
    print(str(i)+ "  Downloading " + rcdf)
    download_cdf(rcdf,lcdf)
    i+=1
  return

# resolve the file name of cdf
def resolve_cdf(html):
  cdfs=list()
  head=html.find("href=")
  
  if head == -1:
    print("The cdf files not found!")
    return cdfs

  leng=len(html)

  while head != -1:
    tail=html.find(">",head,leng)
    # Extract the cdf file name
    cdf=html[head+6:tail-1]
    head=html.find("href=",tail,leng)
    if cdf.find('cdf') == -1:
      continue
    cdfs.append(cdf)
  return cdfs

def download_cdf(rcdf,lcdf):
  rfile=requests.get(rcdf)
  with open(lcdf,"wb") as f:
    f.write(rfile.content)
  f.close()
  return

if __name__ == "__main__":
  lpath=Path(path)
  if not lpath.is_dir():
    print("Path not found: " + path)
    sys.exit(0)
  sys.exit(main())

4. 使用说明

url为远程cdf文件所在路径。
path为本地保存cdf文件的路径。
url和path的末尾都有“/”(Linux下情形,若是Windows,路径分隔符为“\\”,则path末尾应为“\\”)。

5. 运行效果

使用python3批量下载rbsp数据的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
python k-近邻算法实例分享
Jun 11 Python
Python之eval()函数危险性浅析
Jul 03 Python
浅析Python中signal包的使用
Nov 13 Python
Python requests发送post请求的一些疑点
May 20 Python
python for循环输入一个矩阵的实例
Nov 14 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
python函数定义和调用过程详解
Feb 09 Python
python中PyQuery库用法分享
Jan 15 Python
Python实现照片卡通化
Dec 06 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 #Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 #Python
python获取网络图片方法及整理过程详解
Dec 20 #Python
python序列化与数据持久化实例详解
Dec 20 #Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 #Python
python3的UnicodeDecodeError解决方法
Dec 20 #Python
基于python调用psutil模块过程解析
Dec 20 #Python
You might like
神族 Protoss 历史背景
2020/03/14 星际争霸
一个更简单的无限级分类菜单代码
2007/01/16 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
php集成开发环境详解
2019/09/24 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python实现数通设备端口监控示例
2014/04/02 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
django静态文件加载的方法
2018/05/20 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
numpy数组广播的机制
2019/07/12 Python
Python列表元素常见操作简单示例
2019/10/25 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
大学生求职推荐信
2013/11/27 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
团队激励口号
2014/06/06 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书