Bonjour à tous,

Je souhaite rédiger un script me permettant de me connecter à la base de données des images du rover martien Perseverance qui se trouvent sur ce site de la NASA : https://pds-imaging.jpl.nasa.gov/dat...mi_imgops/sol/

Chaque sous-dossier correspond à un sol martien (un "jour" sur mars).
J'ai donc en premier lieu une fonction qui me liste tous les liens vers les différents sols :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
def getTree():
	url = 'https://pds-imaging.jpl.nasa.gov/data/mars2020/mars2020_imgops/data_rmi_imgops/sol/'
	response = requests.get(url)
	soup = BeautifulSoup(response.text, 'lxml')
	urls = [url + a.get('href') + '/ids/edr/scam/' for a in soup.find_all('a') if re.match(r'[0-9]{5}', a.get('href'))]
	return list(dict.fromkeys(urls))
La méthode get() de requests met environ 10 secondes à s'exécuter, donc pour cette étape ça peut aller.
Le problème c'est qu'ensuite, je dois parcourir l'ensemble de ces sous-dossiers pour checker s'il y a une image FITS, car il n'y en a pas systématiquement.

J'ai vu qu'utiliser Session() pouvait être plus rapide alors actuellement la solution ressemble à :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
tree = getTree()
session = requests.Session()
for link in tree:
	session.get(link)
Sauf que ça prend une éternité...
Bon et en plus de ça, je dois checker s'il y a un ou plusieurs fichier FITS, regarder si je n'ai pas déjà ces fichiers, et les télécharger si ce n'est pas le cas. Pareil, j'ai une solution mais pas sûre qu'elle soit optimale...

En fait ce qui à l'air de prendre le plus de temps, c'est d'obtenir le code HTML de la page. Auriez-vous une solution *vraiment* plus rapide ?
Si possible, j'aimerais éviter de passer par 36 modules tiers...

Au plaisir de vous lire !