Python est le langage de prédilection pour l'automatisation de tâches web et le traitement de données. Sa syntaxe claire, son écosystème de bibliothèques immense et sa polyvalence en font l'outil idéal pour les scripts d'automatisation que tout développeur web gagne à maîtriser.
Pourquoi Python pour l'automatisation web ?
Python excelle là où PHP ou JavaScript seraient maladroits : traitement de fichiers en masse, web scraping, génération de rapports, interaction avec des APIs, automatisation de tâches répétitives. Son écosystème (requests, BeautifulSoup, pandas, Pillow) couvre tous les besoins courants.
Appels API REST avec Requests
import requests
import json
# GET simple
response = requests.get('https://api.monsite.fr/articles',
headers={'Authorization': 'Bearer ' + token},
params={'status': 'published', 'limit': 50}
)
articles = response.json()
# POST avec données JSON
new_article = {
'titre': 'Mon article',
'contenu': 'Contenu...',
'tags': ['python', 'automatisation']
}
response = requests.post('https://api.monsite.fr/articles',
json=new_article,
headers={'Authorization': 'Bearer ' + token}
)
print(response.json())
# Gestion des erreurs
if response.status_code != 201:
print(f'Erreur {response.status_code}: {response.text}')
Web Scraping avec BeautifulSoup
from bs4 import BeautifulSoup
import requests
def scrape_articles(url: str) -> list:
response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(response.text, 'html.parser')
articles = []
for article in soup.select('article.post-card'):
articles.append({
'titre': article.select_one('h2').text.strip(),
'url': article.select_one('a')['href'],
'date': article.select_one('time')['datetime'],
})
return articles
Respectez toujours le fichier robots.txt du site et les conditions d'utilisation avant de scraper.
Traitement de fichiers en masse
import os
from pathlib import Path
from PIL import Image
def optimize_images(folder: str, max_width: int = 1200) -> None:
for img_path in Path(folder).glob('**/*.jpg'):
with Image.open(img_path) as img:
if img.width > max_width:
ratio = max_width / img.width
new_height = int(img.height * ratio)
img = img.resize((max_width, new_height), Image.LANCZOS)
# Convertir en WebP
webp_path = img_path.with_suffix('.webp')
img.save(webp_path, 'WEBP', quality=85)
print(f'Optimisé : {img_path.name} -> {webp_path.name}')
Génération de rapports CSV/Excel
import csv
import pandas as pd
# CSV simple
with open('rapport.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['date', 'ventes', 'clients'])
writer.writeheader()
writer.writerows(data)
# Excel avec pandas et formatage
df = pd.DataFrame(data)
with pd.ExcelWriter('rapport.xlsx', engine='openpyxl') as writer:
df.to_excel(writer, sheet_name='Ventes', index=False)
Automatisation planifiée
import schedule
import time
def sync_articles():
print('Synchronisation des articles...')
# Logique de synchronisation
def send_report():
print('Envoi du rapport hebdomadaire...')
schedule.every().day.at('03:00').do(sync_articles)
schedule.every().monday.at('08:00').do(send_report)
while True:
schedule.run_pending()
time.sleep(60)
Pour approfondir, la documentation Python est disponible en français et couvre tous les modules standards utiles pour l'automatisation.
Conclusion
Python transforme des tâches manuelles répétitives en processus automatisés fiables. Pour tout développeur web, maîtriser les bases de python ouvre un monde de possibilités : audit automatique de sites, migration de données, génération de rapports, intégrations d'APIs et bien plus. L'investissement d'apprentissage est rapidement rentabilisé.
L'automatisation Python dépasse largement le web scraping. Pour les workflows complexes, Prefect et Airflow orchestrent des pipelines de données avec retry automatique et monitoring intégré. La bibliothèque playwright remplace avantageusement Selenium : plus rapide, API moderne, et support natif de l'async. Pour les APIs REST, httpx apporte le support async et HTTP/2. Packagisez vos scripts en CLI avec click ou typer pour les partager en équipe. Containerisez avec Docker pour une exécution reproductible en CI/CD. La documentation Python et le dépôt awesome-python référencent les meilleures bibliothèques d'automatisation disponibles pour chaque cas d'usage.
Bonnes pratiques pour vos scripts
Structurez vos scripts Python avec une fonction main() bien définie, utilisez argparse pour les paramètres en ligne de commande, et journalisez les erreurs avec le module logging. Versionnnez vos scripts dans Git comme du code applicatif : les scripts d'automatisation sont du code de production et méritent le même soin que le reste de la codebase.
Gestion des erreurs et robustesse
Un script d'automatisation Python robuste gère les erreurs gracieusement : utilisez des blocs try/except spécifiques (pas except Exception générique), journalisez chaque erreur avec contexte suffisant pour le débogage, et implémentez des retries avec backoff exponentiel pour les appels réseau. La bibliothèque tenacity simplifie les retry patterns. Un script qui échoue silencieusement est pire qu'un script qui n'existe pas.