urllib + json.loads
json.loads(texte)
json.loads (avec un « s », pour string) lit une chaîne ; json.load (sans « s ») lit un fichier ouvert. Sur le web on a du texte, donc loads.
Aller chercher un fichier ou une API sur le web - urllib, json, pandas
Une URL est l'adresse exacte d'une ressource sur le web. Pour lire des données, elle doit pointer vers le fichier brut lui-même (qui finit souvent par .csv ou .json), pas vers une jolie page qui l'entoure.
| Morceau | Exemple | Ce que c'est |
|---|---|---|
| Protocole | https:// | la façon de transporter (https = sécurisé) |
| Domaine | exemple.com | le serveur, la « maison » qui héberge |
| Chemin | /data/2026 | les dossiers à l'intérieur du serveur |
| Ressource | /mesures.csv | le fichier visé (son extension compte) |
Coller l'URL dans le navigateur est le test le plus simple : si tu vois le texte brut du CSV ou du JSON s'afficher, l'adresse est bonne pour Python.
Le module urllib.request est inclus dans Python (rien à installer). Il ouvre l'URL comme on ouvrirait un fichier, et .read() en récupère le contenu.
.read() rend des octets bruts (type bytes) ; .decode("utf-8") les transforme en texte (type str) avec les bons accents. Ensuite, ce texte se traite comme n'importe quel contenu de fichier (.splitlines(), .split(","), etc.).
Beaucoup de services (météo, astronomie, finance...) répondent en JSON. On télécharge le texte avec urllib, puis json.loads le transforme en dictionnaire ou liste Python.
json.loads(texte)
json.loads (avec un « s », pour string) lit une chaîne ; json.load (sans « s ») lit un fichier ouvert. Sur le web on a du texte, donc loads.
[ ] par clé et par indice
Une réponse JSON est un empilement de dictionnaires et de listes. On descend dedans avec ["cle"] pour un dictionnaire et [indice] pour une liste, l'un après l'autre.
pandas et numpy savent ouvrir une URL directement, sans passer par urllib. C'est la façon la plus courte quand le fichier distant est un CSV ou un JSON de tableau.
pd.read_csv(url) - pd.read_json(url)
Une seule ligne fait tout : télécharger, décoder et organiser en DataFrame. pd.read_json(url) fait pareil pour un JSON en forme de tableau.
np.genfromtxt(url, ...)
Pour des données purement numériques, numpy télécharge et lit en un appel. À retenir : urllib marche partout ; pandas/numpy sont des raccourcis pour les formats qu'ils connaissent.
Le réseau peut échouer : page introuvable (404), serveur en panne, pas de connexion. Avec try / except, le programme prévient au lieu de planter brutalement.
timeout=10 abandonne après 10 secondes au lieu d'attendre indéfiniment. urllib.error.URLError attrape les pannes de réseau et de serveur (y compris les 404). Toujours prévoir ce filet quand on dépend du web.
Cinq erreurs très fréquentes quand les données viennent du web.
Sans .decode("utf-8"), .read() rend des octets (bytes), reconnaissables au b"..." devant. Les méthodes de texte plantent dessus. Décode juste après le .read().
Python a besoin du protocole complet. Une URL doit toujours commencer par http:// ou https://, sinon il ne sait pas comment s'y prendre.
Beaucoup de sites entourent le fichier d'une page web (HTML). Il faut l'URL du fichier brut (souvent le mot raw ou un bouton « Download »), sinon Python lit la page au lieu des données.
Un programme qui lit une URL ne marche que si la connexion et le serveur répondent. Pour une démo ou un examen, garde une copie locale du fichier en secours - et entoure l'appel d'un try / except.
Contrairement à un fichier sur ton disque, une ressource web peut être mise à jour, déplacée ou supprimée sans prévenir. Ne suppose jamais que le contenu sera identique d'une fois à l'autre.