使用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爬虫之爬虫编写全记录
Nov 06 Python
分享一下如何编写高效且优雅的 Python 代码
Sep 07 Python
python3.6的venv模块使用详解
Aug 01 Python
pycharm安装和首次使用教程
Aug 27 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
在django中自定义字段Field详解
Dec 03 Python
Python for循环搭配else常见问题解决
Feb 11 Python
Django一小时写出账号密码管理系统
Apr 29 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
PHP新手上路(九)
2006/10/09 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
php生成rss类用法实例
2015/04/14 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
python中使用序列的方法
2015/08/03 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
python Tornado框架的使用示例
2020/10/19 Python
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
DTD的含义以及作用
2014/01/26 面试题
中药专业大学生医药工作求职信
2013/10/25 职场文书
高中生期末评语大全
2014/01/28 职场文书
酒店员工培训方案
2014/06/02 职场文书
初中毕业生自我评价
2015/03/02 职场文书
2015年高校就业工作总结
2015/05/04 职场文书