Leçon 6/6 8 min

API et web scraping

Récupérez des données avec requests, explorez les API REST et faites du web scraping avec BeautifulSoup.

requests — faire des requêtes HTTP

La bibliothèque requests est l'outil n°1 pour communiquer avec des API en Python :

import requests

# GET — récupérer des données
response = requests.get("https://jsonplaceholder.typicode.com/users/1")
print(response.status_code)  # 200

# Convertir la réponse en dictionnaire Python
user = response.json()
print(user["name"])    # Leanne Graham
print(user["email"])   # Sincere@april.biz

Les méthodes principales :

  • requests.get(url) — récupérer des données
  • requests.post(url, json=data) — envoyer des données
  • requests.put(url, json=data) — mettre à jour
  • requests.delete(url) — supprimer

API REST — les concepts

Une API REST utilise des URLs pour organiser les données. Chaque URL représente une ressource :

import requests

# Liste des articles
articles = requests.get("https://api.example.com/articles").json()

# Un article spécifique
article = requests.get("https://api.example.com/articles/42").json()

# Créer un article
nouveau = requests.post("https://api.example.com/articles", json={
    "titre": "Mon article",
    "contenu": "Le contenu ici..."
})
print(nouveau.status_code)  # 201 (créé)

# Avec authentification (token)
headers = {"Authorization": "Bearer mon_token_secret"}
data = requests.get("https://api.example.com/profil", headers=headers)
print(data.json())

Codes HTTP courants : 200 = OK, 201 = Créé, 404 = Non trouvé, 401 = Non autorisé, 500 = Erreur serveur.

Web scraping avec BeautifulSoup

Le web scraping consiste à extraire des données depuis des pages HTML. BeautifulSoup rend ça simple :

import requests
from bs4 import BeautifulSoup

# Télécharger la page
response = requests.get("https://example.com")
soup = BeautifulSoup(response.text, "html.parser")

# Extraire le titre
titre = soup.find("h1").text
print(titre)

# Tous les liens
for lien in soup.find_all("a"):
    href = lien.get("href")
    texte = lien.text.strip()
    print(f"{texte} → {href}")

# Sélecteurs CSS (comme JavaScript)
prix = soup.select(".product-price")
for p in prix:
    print(p.text)

Installation : pip install requests beautifulsoup4

Éthique et bonnes pratiques

Le web scraping est puissant, mais il faut le faire de manière responsable :

  • robots.txt — vérifiez https://site.com/robots.txt avant de scraper. Ce fichier indique ce qui est autorisé.
  • Rate limiting — attendez entre chaque requête pour ne pas surcharger le serveur :
import time

urls = ["https://example.com/page1", "https://example.com/page2"]
for url in urls:
    response = requests.get(url)
    # Traiter la réponse...
    time.sleep(1)  # attendre 1 seconde entre chaque requête
  • Préférez les API — si un site offre une API, utilisez-la plutôt que le scraping.
  • Conditions d'utilisation — certains sites interdisent le scraping. Lisez les CGU.

Pour aller plus loin

Vous maîtrisez maintenant les fondamentaux de Python. Voici les directions à explorer :

Références complètes : W3Schools Python · Python.org (docs FR)

Le couteau suisse est ouvert

Python ouvre des portes au-delà du web — data science, intelligence artificielle, automatisation système. C'est le couteau suisse du développeur moderne.

Avec HTML/CSS/JS pour le front, PHP pour le back web, et Python pour tout le reste, vous avez un arsenal complet. Chaque langage a sa spécialité, et vous savez maintenant lire, modifier et débugger dans chacun d'eux.

La suite ? Choisissez votre spécialisation — web, data, IA, automatisation — et creusez. Les fondations sont là. Construisez.

requests — making HTTP requests

The requests library is the #1 tool for communicating with APIs in Python:

import requests

# GET — fetch data
response = requests.get("https://jsonplaceholder.typicode.com/users/1")
print(response.status_code)  # 200

# Convert the response to a Python dictionary
user = response.json()
print(user["name"])    # Leanne Graham
print(user["email"])   # Sincere@april.biz

Main methods:

  • requests.get(url) — fetch data
  • requests.post(url, json=data) — send data
  • requests.put(url, json=data) — update
  • requests.delete(url) — delete

REST APIs — the concepts

A REST API uses URLs to organize data. Each URL represents a resource:

import requests

# List of articles
articles = requests.get("https://api.example.com/articles").json()

# A specific article
article = requests.get("https://api.example.com/articles/42").json()

# Create an article
new = requests.post("https://api.example.com/articles", json={
    "title": "My article",
    "content": "The content here..."
})
print(new.status_code)  # 201 (created)

# With authentication (token)
headers = {"Authorization": "Bearer my_secret_token"}
data = requests.get("https://api.example.com/profile", headers=headers)
print(data.json())

Common HTTP codes: 200 = OK, 201 = Created, 404 = Not Found, 401 = Unauthorized, 500 = Server Error.

Web scraping with BeautifulSoup

Web scraping means extracting data from HTML pages. BeautifulSoup makes it easy:

import requests
from bs4 import BeautifulSoup

# Download the page
response = requests.get("https://example.com")
soup = BeautifulSoup(response.text, "html.parser")

# Extract the title
title = soup.find("h1").text
print(title)

# All links
for link in soup.find_all("a"):
    href = link.get("href")
    text = link.text.strip()
    print(f"{text} → {href}")

# CSS selectors (like JavaScript)
prices = soup.select(".product-price")
for p in prices:
    print(p.text)

Installation: pip install requests beautifulsoup4

Ethics and best practices

Web scraping is powerful, but it must be done responsibly:

  • robots.txt — check https://site.com/robots.txt before scraping. This file indicates what's allowed.
  • Rate limiting — wait between requests to avoid overloading the server:
import time

urls = ["https://example.com/page1", "https://example.com/page2"]
for url in urls:
    response = requests.get(url)
    # Process the response...
    time.sleep(1)  # wait 1 second between each request
  • Prefer APIs — if a site offers an API, use it instead of scraping.
  • Terms of service — some sites prohibit scraping. Read the ToS.

Going further

You now master the fundamentals of Python. Here are directions to explore:

Full references: W3Schools Python · Python.org (docs)

The Swiss army knife is open

Python opens doors beyond the web — data science, artificial intelligence, system automation. It's the modern developer's Swiss army knife.

With HTML/CSS/JS for the front, PHP for the web back-end, and Python for everything else, you have a complete arsenal. Each language has its specialty, and you now know how to read, modify and debug in each of them.

What's next? Choose your specialization — web, data, AI, automation — and dig in. The foundations are there. Keep building.

Avec l'IA

Copiez ce prompt dans Claude ou ChatGPT :

Écris un script Python qui utilise l'API OpenWeather pour récupérer la météo d'une ville. Affiche la température, l'humidité et la description. Gère les erreurs (ville introuvable, problème réseau).
Quelle méthode HTTP est utilisée pour récupérer des données depuis une API ?
Comment convertir une réponse HTTP en dictionnaire Python avec requests ?
Que faut-il vérifier avant de scraper un site web ?
Pourquoi ajouter time.sleep(1) entre les requêtes de scraping ?
Commencer le cours Go →
Start the Go course →
Besoin d'un développeur pour votre projet ?

Réponse sous 24h — Sans engagement