Accueil

Traduction

Tutoriel Python - sommaire

Tutoriel Python - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Python et le web

Dans le chapitre suivant j'aborde les "templates" (pages web dynamiques) : Flask et les templates

Interroger le web avec Python

Avant d'aborder le développement de sites web en python, je voudrais vous montrer que le "surf" sur la toile peut être automatisé et que toujours via Python, vous pouvez "moissonner" le web c'est à dire récupérer des infos sur des pages web.

Script Python qui accède à tous mes tutos en ligne

Le code du programme

#nom programme : surfer.py
# programme qui ouvre dans le navigateur par défaut tous les tutos

import webbrowser

liste_url = [
'https://darchevillepatrick.info',
#page accueil
'https://darchevillepatrick.info/python/python1.php',
# tutoriel python
'https://darchevillepatrick.info/debutant/debuter0.php',
# tutoriel débuter en prog. web
'https://darchevillepatrick.info/debutant/debuter20.php',
# tutoriel PHP et MYSQL
'https://darchevillepatrick.info/html/html0.php',
#tutoriel html5
'https://darchevillepatrick.info/css/css0.php',
#tutoriel css3
'https://darchevillepatrick.info/svg/svg0.php',
#tutoriel svg
'https://darchevillepatrick.info/inkscape/ink0.php',
#tutoriel inkscape
'https://darchevillepatrick.info/js/js0.php',
#tutoriel javascript
'https://darchevillepatrick.info/canvas/canvas0.php'
#tutoriel sur Canvas
]         

for url in liste_url:
    webbrowser.open(url)

Il faut importer le module webbrowser.
Les différentes url sont stockées dans une liste.
Une boucle parcourt cette liste et ouvre chaque page web dans un nouvel onglet de la fenêtre du navigateur.
J'utilise donc la fonction open_new_tab() du module.

Le rendu

À partir de l'explorateur de fichiers, double cliquez sur "surfer.py".
Le navigateur par défaut est ouvert avec douze onglets ; un onglet pour chaque URL de la liste.

Récupérer l'en-tête HTPP d'une page web

Le code du programme

# nom programme : entete.py

import requests

url = "https://darchevillepatrick.info"
response = requests.get(url)

# Récupérer l'entête HTTP de la page web
entete = response.headers

for cle, valeur in entete.items():
    print(f'{cle}: {valeur}')

Attention il faut éventuellement installer la bibliothèque requests via le pip.

response = requests.get(url) : l'objet "response" référence la page web
La variable "entete" contient l'en-tête HTPP de la page sous forme d'un dictionnaire.
Une boucle permet un affichage propre des paires de clé:valeur de ce dictionnaire.

Le rendu - extrait

Date: Mon, 12 Jan 2026 15:05:02 GMT
Server: Apache
Last-Modified: Thu, 24 Jul 2025 15:38:19 GMT
ETag: "1b72-63aae9d650085-gzip"
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 2944
Content-Type: text/html
X-Varnish: 74069773204 74565026249
Age: 3375
Via: 1.1 webcache2 (Varnish/trunk)
Accept-Ranges: bytes
Connection: keep-alive

Récupérer le contenu d'une page web

Cette fois nous voulons afficher le code HTML de la page web.

Le programme

# nom programme : contenu_page.py
import requests

url = "https://darchevillepatrick.info"
response = requests.get(url)

if response.status_code == 200:
    contenu = response.text
    print("contenu de la page :")
    print(contenu)
else:
    print("Erreur lors de la requête")

J'ai rajouté un test pour donner un caractère plus professionnel au programme.
Je rappelle que le code 200 retourné par une requête HTPP signifie "aucun problème".
contenu = response.text : propriété "text" au lieu de "headers".

Le rendu

Ce programme affiche tout le code HTML de la page "darchevillepatrick.info" (page d'accueil de mon site)

'Parser' du code HTML

Je vais maintenant vous montrer comment procéder à du "web scraping".
Le 'web scraping' sert principalement à extraire automatiquement des données de sites web pour des usages variés comme le commerce électronique, les études de marché ou encore l'enrichissement de bases de données.

Le programme

Ce programme contient du code HTML qui doit être "parsé" (analysé) :

Pour analyser le code HTML nous devons utiliser la bibliothèque beautifulSoup.
beautiful Soup est une bibliothèque Python spécialisée dans l'analyse et la manipulation de documents HTML et XML.

Cette librairie doit être au préalable installée avec l'utilitaire pip.
Mais pour l'importer vous pouvez saisir tout simplement : import bs4

Analysons quelques instructions du script :
soup = BeautifulSoup(code_html, 'html.parser') : "soup" est une instance de la classe BeautifulSoup qui va permettre de 'parser' le code HTML récupéré.

Le rendu

Titre général
Premier paragraphe
Deuxième paragraphe

Le programme affiche bien le contenu des trois éléments HTML ciblés.

'Parser' une page web de mon site

Dans la pratique on 'parse' une page web de la 'toile'.

Le programme

# nom programme : parser_page_web.py

def parser(): # définition fonction 
    soup = BeautifulSoup(contenu, 'html.parser')
    # Afficher le contenu de toutes les liens
    for a in soup.find_all('a'):
        print(a.text)
    print("-------------")
    # Afficher le title de la page
    title = soup.find('title')
    print(title.text)
    print("-------------")
    # Afficher le titre général de la page
    h1 = soup.find('h1')
    print(h1.text)

from bs4 import BeautifulSoup
import requests

url = "https://darchevillepatrick.info"
response = requests.get(url)

if response.status_code == 200:
    contenu = response.text
    parser() #appel fonction 
else:
    print("Erreur")

Nous devons donc utiliser les librairies requests & beautifulSoup.
Le programme doit être structuré : une routine principale appelant une fonction.
La fonction affiche les contenus des éléments HTML suivant : a, title, h1

Le rendu

Débuter en prog. web (HTML & CSS)
Découverte de PHP et MySQL
Tutoriel HTML - version 5
Tutoriel CSS - version 3
Dessin vectoriel avec SVG
Le framework Snap SVG
Inkscape & BoxySVG
Tutoriel JavaScript
Frameworks jQuery & Vue
API Canvas
Le site Doris
Biologie aquatique pour les nuls
Courtes vidéos sur des animaux marins fascinants
Guide de survie en orthographe
Tutoriel Python
Développement web avec  Flask Python
page facebook relative à mon site
-------------
Programmation web &  POO avec Python & 
biologie aquatique & 
guide de survie en orthographe 
- site de Patrick Darcheville
-------------
Site de Patrick Darcheville 

Des micros applications web réalisées avec Flask

Dans cette deuxième partie, j'aborde le développement web en Python et plus précisément via son framework Flask.
Ce chapitre est une "mise en bouche" ; les chapitres suivants porteront toujours sur le framework flask.

Technologie CGI

Avant que n'existent des frameworks tels Django et Flask, il fallait utiliser la technologie CGI pour développer une application web en Python.
La technologie CGI est considérée comme dépassée en raison de ses limitations en matière de performance et de sécurité.
Dans le cadre de cette technologie on mélangeait dans un même fichier des instructions Python avec du HTLM, du CSS voire du SQL.
Ce "joyeux mélange" rendait très difficile la compréhension du code et donc sa maintenance.

Les développements web en python se basent désormais sur des frameworks tels que Django ou Flask qui proposent une architecture rigoureuse.

Présentation de Flask

Flask est un micro framework open-source de développement web en Python.
Flask a été créé initialement par Armin Ronacher en 2010. Le souhait de son créateur était de réaliser un framework web Python très simple d'emploi.
Si vous connaissez Flask, vous n'aurez aucune difficulté pour aborder Django.

Installation de Flask

Flask est une bibliothèque Python. Donc pour le télécharger sur votre PC il faut utiliser pip.

Le modèle MVT

Afin d'obtenir dans chaque fichier de l'application, un code facile à comprendre donc facile à maintenir il faut bien séparer les données des traitements.

Quelques micros applications avec Flask

Créez un nouveau dossier à la racine de C: et nommez le "flask_basique".

Le script "bienvenue.py"

Le code

Utilisez l'IDLE de Python pour produire le code suivant :

Ce fichier est bien sûr enregistré dans "C:\flask_basique".
J'ai importé la fonction "Flask" du module "flask" . Attention : un F majuscule pour la fonction & un f minuscule pour le module.

Est associée à la route '/' la vue (une fonction Python) nommée "bonjour()".
"/" représente la racine du site !
Il faut toujours associer à une route une vue.

Le dernier bloc (if __name__ ==...) est très important ; c'est cette instruction qui crée le serveur web local sur le port 5000 (par défaut).
Ce serveur doit être utilisé en phase de développement mais en phase de production.

Lancer l'application

Toujours dans le cadre de l'IDLE Python cliquez sur la commande "RUN MODULE".
Texte qui apparait alors dans le shell de l'IDLE :

* Serving Flask app 'bienvenue'
 * Debug mode: off
 WARNING: This is a development server. 
 Do not use it in a production deployment. Use a production WSGI server instead
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

Le terminal vous informe que le serveur web local "tourne" sur le port 5000.
J'ouvre alors le navigateur (Chrome ou Firefox) ; je saisis dans la barre d'URL du navigateur localhost:5000
Le message "Bienvenue sur Flask" est alors affiché dans l'onglet du navigateur et avec une mise en forme correspondant au formatage par défaut de l'élément H2 (gras, grande taille du texte).
En effet, étant à la racine du site c'est la vue "bonjour" qui est exécutée.

Le script "maintenant.py"

Tapez le code suivant sous NotePad (ou un éditeur de textes équivalent) ; enregistrez le fichier sous le nom "maintenant.py" dans le dossier "c:\flask_basique".

Le code

Pour gérer les dates et heures je dois importer le module datetime.
ce module comprend entre autres la fonction datetime().
dt.datetime.now() retourne l'instant présent.
les propriétés applicables à cet objet sont : hour, minute, second, year, day, month
Je dois retourner dans la fenêtre du navigateur une expression contenant des variables. Pour éviter conversions et concaténations, je crée une chaine formatée dans la variable "message".
Constatez qu'une "f-strings" peut contenir du balisage HTML.

Lancer l'application

Je vous propose une deuxième méthode pour lancer une application flask.

Via l'explorateur de fichiers, ouvrez le dossier contenant "maintenant.py" puis double cliquez sur ce fichier. L'invite de commandes (cmd) s'affiche :

 * Serving Flask app 'maintenant'
 * Debug mode: off
WARNING: This is a development server. 
Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

Le terminal vous informe que le serveur web local "tourne" sur le port 5000.
J'ouvre alors un navigateur (Chrome ou Firefox) et je tape en guise d'URL : localhost:5000

Le script "table_multiplication.py"

Le script

Tout le code HTML produit est stocké au fur et à mesure dans la variable "chaine" puis il est retourné au navigateur.
Comme dans l'exemple précédent j'utilise les "f-strings" (ou chaines formatées) pour construire le contenu de la variable "chaine". Notez qu'une chaine formatée peut non seulement intégrer du balisage HTML mais aussi des expressions telles {i*j}.

Lancer l'application

Pour lancer l'application je vous propose une troisième solution.
Tapez "cmd" dans la zone "rechercher".
Le programme 'invite de commandes s'affiche (fond noir et texte en blanc).
Tapez alors :

C:\Users\darch>cd \flask_basique
C:\flask_basique>py tables_multiplication.py

L'invite de commandes affiche alors :

 * Serving Flask app 'tables_multiplication'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. 
Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

Encore une fois vous êtes informé que le serveur web local est disponible sur le port 5000.
Vous n'avez plus qu'à ouvrir le navigateur, saisir dans la barre d'URL : localhost:5000
Vous êtes alors à la racine du site (/) donc la vue "table" est exécutée et celle-ci affiche les tables de multiplication.

Le rendu dans le navigateur

Conclusion

Vous savez désormais réaliser des micro applications web avec flask et vous savez les tester en local ;
L'objectif est, bien sûr de réaliser de véritables sites web avec Python-flask (site statique voire site dynamique). Ce sera l'objet des chapitres suivants.