python下载IGS观测数据
最近在学习GPS数据软件处理,经常需要下载数据练习,反复去网站上很麻烦,于是就写了一个小小的爬虫,用的是韩国的服务器,使用了python中的ftplib库实现的
今天稍微改了一下代码,可以选择卫星系统,支持批量下载,可以选择年份年积日
忘了添加n文件下载功能了,今天补上
#encode=utf8
'''
Created on 2016年10月18日 @author: WangHui
'''
from ftplib import FTP
import os
import traceback class DownLoadGPS(object):
__URLon='210.219.33.196'
@staticmethod
#形参均使用字符串表示
def ListOName(form,year,daily,gnss='gps'):
ftp=FTP()
ftp.connect(DownLoadGPS.__URLon,timeout=1000000)
ftp.login()
ftp.cwd('/'+gnss+'/data/daily/'+year+'/'+daily+'/'+year[-2:]+'o/')
return ftp @staticmethod
def ListNName(form,year,daily,gnss='gps'):
ftp=FTP()
ftp.connect(DownLoadGPS.__URLon)
ftp.login()
ftp.cwd('/'+gnss+'/data/daily/'+year+'/'+daily+'/'+year[-2:]+'n/')
return ftp
@staticmethod
#下载文件
#不考虑是什么类型的数据
#只需要文件名和路径和ftp参数
def DownLoadFile(ftp,path='D:\\'):
#加载第一页的数据
DownLoadGPS.LoadPage(ftp, 1)
while True:
fileIndex=input('输入 索引(1,2,3,4,5) 开始下载,输入 n+页数(n1) 换页(按q退出) :')
if fileIndex=='q' or fileIndex=='Q':
break
if fileIndex[0]=='n' or fileIndex[0]=='N':
DownLoadGPS.LoadPage(ftp, int(fileIndex[1:]))
else:
ls=fileIndex.split(',')
for i in range(len(ls)):
try:
print('开始下载'+ls[i])
f=open(os.path.join(path,ftp.nlst()[int(i)-1]),'wb')
#A RETR request asks the server to send the contents of a file over the data connection already established by the client.
#The RETR parameter is an encoded pathname of the file.
#The file is either a binary file or a text file, depending on the most recent TYPE request.
ftp.retrbinary('RETR '+ftp.nlst()[int(i)-1],f.write)
except:
print('软件异常,不过不妨事')
@staticmethod
#加载第index页的数据
def LoadPage(ftp,index,perpage=20):
if len(ftp.nlst())==0:
print('暂时没有这天数据,q退出')
return
pagecount=len(ftp.nlst())//perpage+len(ftp.nlst())%perpage
start=(index-1)*perpage
if start>=len(ftp.nlst()):
start=len(ftp.nlst())-1
end=index*perpage
if end>len(ftp.nlst()):
end=len(ftp.nlst())
print('共%d页%d项,当前正在加载第%d页' %(pagecount,len(ftp.nlst()),index))
for i in range(start,end):
print(str(i)+' : '+ftp.nlst()[i])
print('共%d页%d项,当前是第%d页' %(pagecount,len(ftp.nlst()),index)) if __name__=='__main__':
gnss=input('输入卫星系统类型(gps,gnss):').lower()
if gnss!='gps' and gnss!='gnss':
print('请输入正确的卫星系统,系统退出')
exit()
while True:
oorn=input('o文件还是n文件(o/n):')
try:
year=input('输入年份:')
data=input('输入年积日:')
if oorn=='o':
ftp=DownLoadGPS.ListOName(gnss, year, data,gnss)
DownLoadGPS.DownLoadFile(ftp)
elif oorn=='n':
ftp=DownLoadGPS.ListNName(gnss, year, data,gnss)
DownLoadGPS.DownLoadFile(ftp)
except:
traceback.print_exc()
print('格式输入错误')
continue
isnext=input('是否继续 y/n:')
if isnext=='y' or isnext=='Y':
continue
else:
break

这是运行效果图,目前只支持gps和gnss的下载观测数据和卫星星历。
python下载IGS观测数据的更多相关文章
- Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
- 【python 下载】-各种版本都有!
python 是一种全功能的语言,2.7很稳定,成熟的版本,且有很多开源的模块. 小编个人觉得python有一个很大的优点,就是语法简练,甚至可以说简单.比起pascal或者 C什么的,简单的难以置信 ...
- Python下载Yahoo!Finance数据
Python下载Yahoo!Finance数据的三种工具: (1)yahoo-finance package. (2)ystockquote. (3)pandas.
- [转] 三种Python下载url并保存文件的代码
原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的. Python中最流行的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib ...
- 用python下载辞典
用python下载词源词典Etymoline Online Etymology Dictionary是最好的 English 词源词典,现在来说没有之一.但是,一直在PC上查单词有时不是很方便,遂就想 ...
- 如何用python下载一张图片
如何用python下载一张图片 这里要用到的主要工具是requests这个工具,需要先安装这个库才能使用,该库衍生自urllib这个库,但是要比它更好用.多数人在做爬虫的时候选择它,是个不错的选择. ...
- python下载安装BeautifulSoup库
python下载安装BeautifulSoup库 1.下载https://www.crummy.com/software/BeautifulSoup/bs4/download/4.5/ 2.解压到解压 ...
- python下载安装requests库
一.python下载安装requests库 1.到git下载源码zip源码https://github.com/requests/requests 2.解压到python目录下: 3.“win+R”进 ...
- python下载夏目友人帳
python下载夏目友人帐 一般情况下我们使用爬虫更多的应该是爬数据或者图片吧,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同 ...
随机推荐
- 2015_WEB页面前端工程师_远程测题_东方蜘蛛_1
请使用HTML+CSS实现如下效果: 1. 使用CSS Sprites,实现如图1效果,素材图片为: icons.png: 2. 使用脚本语言验证邮箱.密码的必填以及邮箱的合法性: 若验证失败,则出现 ...
- Uva_10253 Series-Parallel Networks
题目链接 题目大意: 1:一条单独的边是串并联网络 2:G1,G2为串并联网络, 将它们的源点与汇点分别连接起来, 得到的也是串并联网络(并联) 3:G1,G2为串并联网络, 将G1的汇点与G2的源点 ...
- javascript学习代码
点击改变p和div元素: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- [BZOJ 1016] [JSOI2008] 最小生成树计数 【DFS】
题目链接:BZOJ - 1016 题目分析 最小生成树的两个性质: 同一个图的最小生成树,满足: 1)同一种权值的边的个数相等 2)用Kruscal按照从小到大,处理完某一种权值的所有边后,图的连通性 ...
- java rest版简单的webservice
目前的webservice风格,rest应该是其中一种 还有种就是soap,rest是轻量级的,越来越流行.下面举一个简单例子说明下rest的用法. 1. 准备ws的jar和spring的jar,如何 ...
- SQL servere 范式、事务
一.数据库范式: 1.构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式. 范式是符合某一种级别的关系模式的集合.数据库中的关系必须满足一定的要求,即满足不同的范式. 满足最低要求的范式是 ...
- Spring MVC 解读——@Autowired(转)
转自:http://my.oschina.net/HeliosFly/blog/203902 Spring MVC 解读——@Autowired 一.@Autowired 作为一个Spring开发者对 ...
- bzoj1334
..] of boolean; a:..] of longint; i,n,s,j,ans:longint; procedure sort(l,r: longint); var i ...
- poj2886
反素数范围不大,可以直接打表得然后就是模拟移动的过程我们可以用线段树优化,具体明天再说吧 ..] ,,,,,,,,,,,,,, ,,, ...
- (转载)Mysql查找如何判断字段是否包含某个字符串
(转载)http://www.th7.cn/db/mysql/201306/31159.shtml 有这样一个需求,在Mysql数据库字符串字段(权限)中,用户有多个不同的邮箱,分别被‘,’分开,现在 ...