前两天因为要做时序处理,需要的精密轨道数据很多,一个一个筛选很耗时耗力,所以作者就写了一个批量获取精密轨道数据的程序,供大家参考使用。

目录

一、精密轨道下载网址

二、程序使用的注意事项

三、cookie的获取以及csv文件的编写保存

1、cookie的获取

2、csv文件的编写与保存

四、更改re(在get_info_href()函数)

五、文件下载保存的文件夹

六、注意事项

七、批量获取精密轨道数据代码

一、精密轨道下载网址

  • https://s1qc.asf.alaska.edu/aux_poeorb/

二、程序使用的注意事项

1、该程序获取的为'https://s1qc.asf.alaska.edu/aux_poeorb/'这个网站上的数据
2、需要写一个csv文件,在csv文件的第一列往下开始写影像下载时间
3、该程序需要更改的第一个地方为'get_info_href()'和'DownLoad_POD()'这两个函数里面的cookie属性
4、需要改re表达式里面的S1A\SAB
5、该程序需要更改的第二个地方为'get_data_time()'函数下的csv文件的路径,例如:'D:\python\datatime.csv'
6、该程序下载精密轨道数据的路径为该程序运行下面的POD文件夹,程序会自己创建,路径在输出窗口也会出现

三、cookie的获取以及csv文件的编写保存

1、cookie的获取

(1)首先我们先打开网址,按鼠标右键点击检查或者F12开发者工具,点击到上面的Network

(2)键盘按ctrl+r,点击aux_poeorb/里面的Headers,鼠标下拉找到Cookie,点击复制,粘贴到程序里面。('get_info_href()'和'DownLoad_POD()'这两个函数里面的cookie属性)

2、csv文件的编写与保存

(1)打开excel文件,在其第一列写入数据,数据为影响日期

(2)保存数据,在保存数据时选择CSV UTF-8文件类型

(3)在程序中输入该文件保存的路径(在get_datatime()函数里面)

四、更改re(在get_info_href()函数)

根据要下载的卫星型号来更改S1A\S1B

五、文件下载保存的文件夹

该程序下载精密轨道数据的路径为该程序运行下面的POD文件夹,程序会自己创建,路径在输出窗口也会出现

六、注意事项

作者试验了25个数据,亲测可行,但时间为什么用了267秒,按理说程序运行应该很快。

这是因为在程序里面我们运用了两个sleep(2)代码,这就意味着25个文件需要100秒才能访问完,实际我们运行了167秒,这个时间还是可行的。

为什么要睡眠2秒,这个可以帮助我们在访问网站时频率降低,防止网站对我们进行禁止访问,是个很实用的方法。

有时候网站会不稳定,可能需要文明上网,但大部分时间都是不需要的。

如果有时候科学上网也解决不了,按找cookie的方法,里面有个参数User-Agent,替换我们get_info_href()和DownLoad_POD()函数里面的User-agent。

当然这种情况毕竟较少见,如果遇到可以尝试这种方法。

七、批量获取精密轨道数据代码

from urllib.request import Request,build_opener
from urllib.error import URLError
from my_fake_useragent import UserAgent
from time import sleep
import re
import datetime
import pandas
import os
from dateutil.parser import parse
'''
1、该程序获取的为'https://s1qc.asf.alaska.edu/aux_poeorb/'这个网站上的数据
2、需要写一个csv文件,在csv文件的第一列往下开始写影像下载时间
3、该程序需要更改的第一个地方为'get_info_href()'和'DownLoad_POD()'这两个函数里面的cookie属性
4、该程序需要更改的第二个地方为'get_data_time()'函数下的csv文件的路径,例如:'D:\python\datatime.csv'
5、该程序下载精密轨道数据的路径为该程序运行下面的POD文件夹,程序会自己创建,路径在输出窗口也会出现
'''
def get_info_href():#利用正则表达式获取每个具体精轨数据的网址try:ua=UserAgent(family='chrome')UA=ua.random() # 设置虚拟代理headers={'User-Agent':UA,'Cookie':'_ga=GA1.2.649753142.1634525068; _ce.s=v11.rlc~1634525094488; asf-urs=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmaXJzdF9uYW1lIjoiXHU3ZDIyIiwibGFzdF9uYW1lIjoiXHU4Zjg5IiwidXJzLXVzZXItaWQiOiJzdW96aGlodWkiLCJ1cnMtYWNjZXNzLXRva2VuIjoiZXlKMGVYQWlPaUpLVjFRaUxDSnZjbWxuYVc0aU9pSkZZWEowYUdSaGRHRWdURzluYVc0aUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SjBlWEJsSWpvaVQwRjFkR2dpTENKamJHbGxiblJmYVdRaU9pSkNUMTl1TjI1VVNXeE5iR3BrZGxVMmExSlNRak5uSWl3aVpYaHdJam94TmpVek1qQXlOekF4TENKcFlYUWlPakUyTlRBMk1UQTNNREVzSW1semN5STZJa1ZoY25Sb1pHRjBZU0JNYjJkcGJpSXNJblZwWkNJNkluTjFiM3BvYVdoMWFTSjkuWHRKa2k4QkcxUFpUSWd0Um03UlN6ZUlOM0FhTWhfSmtjUF91bnhmbHB4WSIsInVycy1ncm91cHMiOltdLCJpYXQiOjE2NTA2MTA3MDIsImV4cCI6MTY1MTIxNTUwMn0.W8Ygb7kVfDO0FFi0i0-zyPCthRD2owCAiBbGawRBvnlcMYS7K5eBsWyYClgHGFfiHtVS83CdYQvZG3g06a1gGPMzqfWqEu55LqcGN-CRNdXt6NeR0a-Ybf9_NQU_TGQNke4xFWx9bOp6LOJXmxUmhTsb4N7ESUqSJccGzPXnr3izZVc1Hqzl-Oiath43mTSRL-nFVJA5V9NpiksbufND4rvxSWa6D5fV63n1pw-uFwola92C86GBaSZo5mKcSLP4llvUktDQViVkZClWde6UtuWsnds7ABIMps9CZj7KBH7jlOWGDkc_Jq0UAeeSzY0ZCYm0zfd0jkWJ3YjehgSH_SlGSStu_H0DELLnPcOXoyhg2QgrmgABbU5YQ-Y0SR95XQCFnauXK_g1nPpHQ3REChPZ7cNPNkjNb1Nqep_D0AfS3TerMw8t_yKSJ9t-sF_ydArhF4IH1yjNSV5aza69vkVtL5dQZLFUQp8nkjURg9dQy5vXS6Q7tbZTMnKj1borHW-uzXZiQ4G5LhsWGRLnpCqheC7IvqrVu2LzhnthD0UMFer2RLMVWPkYQ1jyCxmDV-u15Jt3j7f5sryyV-HSLqt_4Dv2WERX1d4Y-IGsxamxILA3I8f8NlhNfgFKMG8J2bAlF53rupfr6BsQRKfS9LCXzxpMcwn8xeZSL2Okhoc; urs-user-id=suozhihui; urs-access-token=eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoiT0F1dGgiLCJjbGllbnRfaWQiOiJCT19uN25USWxNbGpkdlU2a1JSQjNnIiwiZXhwIjoxNjUzMjAyNzAxLCJpYXQiOjE2NTA2MTA3MDEsImlzcyI6IkVhcnRoZGF0YSBMb2dpbiIsInVpZCI6InN1b3poaWh1aSJ9.XtJki8BG1PZTIgtRm7RSzeIN3AaMh_JkcP_unxflpxY'}url='https://s1qc.asf.alaska.edu/aux_poeorb/' # 请求网址time=get_datetime() # 运行get_datatime()函数,返回时间day = datetime.timedelta(days=1)#确定day参数,让day=1href=[] # 设置空列表,用来存储精轨网址for i in time: # 对返回来的时间进行遍历# str为正则表达式,用来识别数据,记得更改S1A\S1B,int((i-day).strftime("%Y%m%d"))和int((i+day).strftime("%Y%m%d"))根据精轨命名规则计算前一天和后一天日期str=f'S1A_OPER_AUX_POEORB_OPOD_\d+\w\d+_\w{int((i-day).strftime("%Y%m%d"))}\w\d+_{int((i+day).strftime("%Y%m%d"))}\w\d+.EOF'req=Request(url,headers=headers) # 发送请求头sleep(2) # 睡眠两秒,防止网站识别opener=build_opener()result=opener.open(req)a=result.read().decode() # 获取所有的精轨网址,以str类型进行保存result1 = re.search(str, a) # 利用正则表达式进行匹配href.append(result1.group()) # 将匹配好的数据存放道href列表中return href # 返回href列表except URLError as e:print(print('网络错误为:'+e))
def DownLoad_POD():#开始下载POD数据文件ua = UserAgent(family='chrome')UA = ua.random()#设置虚拟代理headers = {'User-Agent': UA,'Cookie':'_ga=GA1.2.649753142.1634525068; _ce.s=v11.rlc~1634525094488; asf-urs=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmaXJzdF9uYW1lIjoiXHU3ZDIyIiwibGFzdF9uYW1lIjoiXHU4Zjg5IiwidXJzLXVzZXItaWQiOiJzdW96aGlodWkiLCJ1cnMtYWNjZXNzLXRva2VuIjoiZXlKMGVYQWlPaUpLVjFRaUxDSnZjbWxuYVc0aU9pSkZZWEowYUdSaGRHRWdURzluYVc0aUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SjBlWEJsSWpvaVQwRjFkR2dpTENKamJHbGxiblJmYVdRaU9pSkNUMTl1TjI1VVNXeE5iR3BrZGxVMmExSlNRak5uSWl3aVpYaHdJam94TmpVek1qQXlOekF4TENKcFlYUWlPakUyTlRBMk1UQTNNREVzSW1semN5STZJa1ZoY25Sb1pHRjBZU0JNYjJkcGJpSXNJblZwWkNJNkluTjFiM3BvYVdoMWFTSjkuWHRKa2k4QkcxUFpUSWd0Um03UlN6ZUlOM0FhTWhfSmtjUF91bnhmbHB4WSIsInVycy1ncm91cHMiOltdLCJpYXQiOjE2NTA2MTA3MDIsImV4cCI6MTY1MTIxNTUwMn0.W8Ygb7kVfDO0FFi0i0-zyPCthRD2owCAiBbGawRBvnlcMYS7K5eBsWyYClgHGFfiHtVS83CdYQvZG3g06a1gGPMzqfWqEu55LqcGN-CRNdXt6NeR0a-Ybf9_NQU_TGQNke4xFWx9bOp6LOJXmxUmhTsb4N7ESUqSJccGzPXnr3izZVc1Hqzl-Oiath43mTSRL-nFVJA5V9NpiksbufND4rvxSWa6D5fV63n1pw-uFwola92C86GBaSZo5mKcSLP4llvUktDQViVkZClWde6UtuWsnds7ABIMps9CZj7KBH7jlOWGDkc_Jq0UAeeSzY0ZCYm0zfd0jkWJ3YjehgSH_SlGSStu_H0DELLnPcOXoyhg2QgrmgABbU5YQ-Y0SR95XQCFnauXK_g1nPpHQ3REChPZ7cNPNkjNb1Nqep_D0AfS3TerMw8t_yKSJ9t-sF_ydArhF4IH1yjNSV5aza69vkVtL5dQZLFUQp8nkjURg9dQy5vXS6Q7tbZTMnKj1borHW-uzXZiQ4G5LhsWGRLnpCqheC7IvqrVu2LzhnthD0UMFer2RLMVWPkYQ1jyCxmDV-u15Jt3j7f5sryyV-HSLqt_4Dv2WERX1d4Y-IGsxamxILA3I8f8NlhNfgFKMG8J2bAlF53rupfr6BsQRKfS9LCXzxpMcwn8xeZSL2Okhoc; urs-user-id=suozhihui; urs-access-token=eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoiT0F1dGgiLCJjbGllbnRfaWQiOiJCT19uN25USWxNbGpkdlU2a1JSQjNnIiwiZXhwIjoxNjUzMjAyNzAxLCJpYXQiOjE2NTA2MTA3MDEsImlzcyI6IkVhcnRoZGF0YSBMb2dpbiIsInVpZCI6InN1b3poaWh1aSJ9.XtJki8BG1PZTIgtRm7RSzeIN3AaMh_JkcP_unxflpxY'}hrefs=get_info_href()path() # 返回设置到的POD路径num=0for href in hrefs: # 遍历每一个返回回来的POD网址try:url = f'https://s1qc.asf.alaska.edu/aux_poeorb/{href}'req = Request(url, headers=headers)sleep(2)opener= build_opener()result = opener.open(req)try:'''开始下载数据'''print('数据下载中')f = open(f'{href}', 'w', encoding='utf-8')f.write(result.read().decode())f.close()print(f'{href}下载完成')num = num + 1except BaseException as f:print('文件下载错误为:',f)except URLError as e:print('网络错误为:',e)print('下载POD数据',str(num),'个',f'下载文件夹路径为{os.getcwd()}')
def path(): # 更改路径,创建POD文件夹path = os.getcwd()isexist = os.path.exists('POD')if not isexist: # 判断该路径下有无POD文件os.mkdir('POD')os.chdir(f'{path}\POD')print(f'在该{path}下已创建POD文件夹,已将当前目录设置为{os.getcwd()}')else:os.chdir(f'{path}\POD')os.chdir(f'{path}\POD')print(f'该{path}下已存在POD文件夹,已将当前目录设置为{os.getcwd()}')
def get_datetime(): # 对csv文件里面的时间进行转换with open(r'D:\pythonProject\python爬虫\datatime.csv', encoding='utf-8') as a:a_scv = pandas.read_csv(a, header=None)nrows = a_scv.shape[0]ncols = a_scv.columns.sizelist = []print('时间数据加载中')for irow in range(nrows):for icol in range(ncols):print(a_scv.iloc[irow, icol])list.append(a_scv.iloc[irow, icol])print(f'加载{nrows}条时间数据')time = []for t in list:time.append(parse(str(t)).date())return time
if __name__=='__main__':start_time=datetime.datetime.now()DownLoad_POD()end_time=datetime.datetime.now()spend_time=(end_time-start_time).secondsprint('下载时间为',spend_time,'s')

Python批量获取精密轨道数据相关推荐

  1. 用Python批量获取唯品会商品数据(附视频教程)

    情人节快到了,还不知道给女朋友买什么礼物? 直男:别问,问就是口红 好吧,那我们今天就来爬一下口红,看看什么色号最受欢迎! 很多兄弟都是苦于没有对应的资料,不清楚方向要学什么,或者有问题半天解决不了就 ...

  2. Sentinel 1A卫星精密轨道数据下载(2022/2/28更新)

    Sentinel 1A卫星精密轨道数据下载(2021/6/22更新) 前言 一.记录数据ID 二.获取精密轨道数据 总结 前言 新数据的更新导致之前的代码不可用,现增加匹配条件更新代码. 欧空局轨道文 ...

  3. 使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据(precise orbit data)

    使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据 1. 安装Python及data_downloader包 2. 下载精密轨道数据与辅助数据 1. 安装Python及data_d ...

  4. Sentinel-1号卫星精密轨道数据简单快速批量下载

    Sentinel-1号卫星精密轨道数据快速批量下载 快速下载哨兵一号精轨数据 精密轨道数据网站 sentineleof库实现一键获取精轨数据 快速下载哨兵一号精轨数据 哨兵数据干涉处理需要精轨数据,简 ...

  5. Python批量下载CHIRPS气象数据并完成解压裁剪等

    文章目录 前言 一.CHIRPS是什么? 二.实现步骤 1.下载数据 2.解压缩 3.批量裁剪 三.完整代码如下 四.代码结果 前言   最近需要下载气象数据--CHIRPS,借助之前学的批量下载哨兵 ...

  6. html状态查询爱站,批量获取爱站数据

    批量获取爱站数据 SEO工作中经常需要批量获取爱站的一些数据,而实际操作中这方面的工具又很少,现在共享一个简单又实用的开源python抓取Code. 首先你需要保存下面的代码,后缀为".py ...

  7. 【ArcGIS遇上Python】python批量获取栅格数据四至(top,bottom,left,right)坐标代码

    上图所示为ArcGIS自带的影像数据,存放路径为C:\Program Files (x86)\ArcGIS\Desktop10.6\ArcGlobeData\wsiearth.tif",在源 ...

  8. python经纬度获取县名_利用 Python 批量获取县镇运输距离

    起因 最近做规划项目,领导让查出某几个市的所有乡镇级行政区域,距离所在县级行政中心的交通运输距离.想着也不是啥难事儿,高德地图一搜就有. 当我把各市行政区划统计完,发现一共有五百多个乡镇,意味着要在地 ...

  9. 极速系列04—python批量获取word/PDF/网页中的表格

    这里写目录标题 1 python批量获取word中的表格 目的: 1.1 简介 1.2 读取word文档内容 方法一 方法二 2 python批量获取PDF中的表格 目的: 2.1 简介 2.2 读取 ...

最新文章

  1. 5.2基于JWT的令牌生成和定制「深入浅出ASP.NET Core系列」
  2. 网络营销外包浅析B站破圈运营是如何增强网络营销能力的?
  3. 整合分页pageHelper||整合分页pageHelper-starter不用做任何分页相关的配置
  4. 科普:String hashCode 方法为什么选择数字 31 作为乘子
  5. python sys.argv[]用法
  6. mysql memcached 使用场景_memcache 应用场景
  7. spark学习-SparkSQL一些函数的使用
  8. junit5和junit4_JUnit声明异常– JUnit 5和JUnit 4
  9. 彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
  10. 系统设计拓展:如何设计一个自动阅卷系统(英语/数学)
  11. matlab与螺旋桨,基于Matlab的船用螺旋桨计算机实时仿真及GUI设计
  12. js导出WORD设置分页
  13. 洛谷P5960 【模板】差分约束算法
  14. Tmux常用命令小结(超全够用)
  15. XPDF安装与使用说明
  16. TSMaster1.1版本更新补丁
  17. vb.net中关于byval和byref的使用
  18. 全景故宫--全景图片展现数字故宫
  19. NumPy入门讲座(3):操作数组
  20. 集合添加元素python_Python 集合(set)添加元素-Python 集合(set) add-Python 集合(set) update-嗨客网...

热门文章

  1. 服务器商店无限量指令,我的世界服务器商店指令怎么用 我的世界商店指令代码介绍...
  2. r720支持多少频率的内存吗_电脑选购-内存
  3. java当前时间减1分钟_java 实现当前时间加减30分钟的时间代码
  4. 达芬奇密码 第三十九章
  5. 手撕伪鸡汤,人事部门经理给你的八个职场忠告
  6. 医药之家:高景气度将延续!医疗器械行业迎政策利好
  7. Android搜索附近蓝牙
  8. ROS 禁止公网暴力破解SSH FTP
  9. 山东省第九届省赛总结 (山财)
  10. HCIA(计算机网络概念、网络协议模型意义)