使用Python快速获取哥白尼数据开放访问中心购物车里的数据下载链接

目录

1.前言
2.操作步骤
3.结果

设想如下场景:你需要在哥白尼数据开放访问中心(Copernicus Open Access Hub)下载挑选过后的200多幅Sentinel的影像,或者你要把你购物车里的数据全部下载。你要一个一个复制数据链接到下载器?或者在一个数据一个数据旁点击下载按钮,然后等下载器同时下完两幅,再来点击下载按钮,下载新数据?这是一个令人头疼的任务。而本博客就来解决这个问题。

1.前言

上回的博客里介绍到:使用IDM批量下载Sentinel(哨兵)卫星数据。博客里介绍通过从网页上一个一个复制数据的链接到TXT文件,然后在TXT文件中选择所有链接到IDM中下载。这种从网页上直接复制数据链接的方法,需要重复的Ctrl+C,Ctrl+V,十分麻烦。本博客介绍一种可以加快获取多数据链接的方法。

2.操作步骤

2.1 当根据条件检索数据后,在每个数据后会有一个加入购物车的选项。点击加入购物车图标(图中红色方框),方便的将想要的数据加入购物车。

2.2. 当点击加入购物车图标后,加入购物车图标即发生变化,显示数据处于购物车中:

2.3. 我这里随便加入了8幅影像到购物车。接下来,就是获取数据链接。打开购物车,可以看到所选的数据已经在里边。这时候我们将每页显示的数据数量调到最大150(尽量把数据显示在一页,如果一页显示不行,接下来的步骤就重复操作,数据较小就可以忽略这个问题)。


2.4. 在浏览器中打开开发人员工具(按F12),可以看到数据的链接全部在id号为’cart-row-attributes’的div标签下的a标签中。这时就想到了使用爬虫来获取页面的数据链接。
使用Python快速获取哥白尼数据开放访问中心购物车里的数据下载链接_第1张图片
2.5. 在页面的空白处,点击鼠标右键,将网页另存为本地(当然有其他方法将网页的内容复制下来,只要获取到网页内容即可。直接通过网页的URL爬取可不容易实现)。

使用如下代码,获取购物车页面里数据的链接和ID号。

from bs4 import BeautifulSoup
import pandas as pd 
import requests

filepath='scihub.copernicus.eu.html' #保存的网页,自己按照实际保存位置调整

with open(filepath,'rb') as f:
    ss=f.read()

soup=BeautifulSoup(ss,'html.parser') 
#获取所有id为cart-row-attributes的div标签
divfind=soup.find_all('div',id='cart-row-attributes')
linklist=[]
idlist=[]
for df in divfind:
    #获取满足条件的div下的a标签
    #提取a标签的内容,即为数据链接
    link=df.find('a').string
    id=link.split('\'')[1]
    linklist.append(link)
    idlist.append(id)
    

linkdataframe=pd.DataFrame(linklist)
iddataframe=pd.DataFrame(idlist)


#将数据链接写出
with pd.ExcelWriter('Httpandid.xlsx') as hifile:
    linkdataframe.to_excel(hifile,sheet_name='HTTP',header=False,index=False)
    iddataframe.to_excel(hifile,sheet_name='ID',header=False,index=False)

3.结果

程序运行后,会自动新建一个Excel文件(这里命名为Httpandid.xlsx)。打开Excel文件即可以看到里边的HTTP表存放数据链接,ID存放数据的ID号(HTTP表和ID表的数据是对应的)。
使用Python快速获取哥白尼数据开放访问中心购物车里的数据下载链接_第2张图片
然后就可以复制数据的链接到IDM,参考:使用IDM批量下载Sentinel(哨兵)卫星数据里边的介绍,愉快进行数据下载了。

你要是对数据没那么挑剔,只要检索出来的数据就都下载下来,那么你就不用将数据加入购物车,直接将检索到数据的网页保存到本地,找到数据链接所处的标签(class为list-link selectable的div标签下的a标签中的内容),写个爬虫即可。

你可能感兴趣的:(使用Python快速获取哥白尼数据开放访问中心购物车里的数据下载链接)