--- # 🎯 Objectifs du chapitre À la fin de ce chapitre, l’étudiant doit être capable de : - comprendre pourquoi il faut **structurer les données extraites** - utiliser **pandas** pour organiser les données - créer un **DataFrame** - sauvegarder les résultats dans un fichier **CSV** - construire un **dataset exploitable pour l’analyse** --- # 1️⃣ Pourquoi sauvegarder les données ? Lorsque nous faisons du scraping, les données sont souvent affichées dans la console : ``` Title: Offshore wind farm launched Date: June 12, 2024 URL: https://site/article ``` Mais ces données doivent être **stockées** pour pouvoir : - les analyser - les partager - les utiliser dans un projet de data science Formats possibles : |format|utilisation| |---|---| |CSV|simple et universel| |JSON|données structurées| |Base de données|grands volumes| Dans ce cours, nous utiliserons **CSV**. --- # 2️⃣ Le format CSV CSV signifie : ``` Comma Separated Values ``` Exemple : ``` title,date,url Wind farm launched,2024-06-12,https://site/article1 New offshore project,2024-06-13,https://site/article2 ``` Chaque ligne représente **une observation**. Chaque colonne représente **une variable**. --- # 3️⃣ Introduction à pandas La bibliothèque **pandas** est l’outil principal pour manipuler des données tabulaires en Python. Installation : ``` pip install pandas ``` --- # 4️⃣ Créer un DataFrame Un **DataFrame** est une table de données. Exemple : ```python import pandas as pd data = { "title": ["Article 1", "Article 2"], "date": ["2024-01-01", "2024-01-02"], "url": ["site/a1", "site/a2"] } df = pd.DataFrame(data) print(df) ``` Résultat : ``` title date url 0 Article 1 2024-01-01 site/a1 1 Article 2 2024-01-02 site/a2 ``` --- # 🧠 Mini-tâche 1 (5 min) Compléter : ```python import pandas as pd data = { "title": ["A","B"], "date": ["2024","2025"] } df = pd.________(data) print(df) ``` --- # 5️⃣ Ajouter des données progressivement Lors d’un scraping, les données arrivent **article par article**. On utilise souvent une liste. Exemple : ```python articles = [] article = { "title": "Wind project", "date": "2024-06-12", "url": "site/article" } articles.append(article) ``` Puis : ```python df = pd.DataFrame(articles) ``` --- # 6️⃣ Pipeline scraping → dataset Schéma du pipeline : ``` Web page ↓ Scraping ↓ Liste de dictionnaires ↓ DataFrame ↓ CSV ``` --- # 🧠 Mini-tâche 2 (5 min) Compléter : ```python articles = [] article = { "title": "Example", "date": "2024", "url": "site" } articles.________(article) ``` --- # 7️⃣ Sauvegarder un DataFrame en CSV Pandas permet d’exporter facilement les données. Exemple : ```python df.to_csv("articles.csv", index=False) ``` Explication : |paramètre|rôle| |---|---| |filename|nom du fichier| |index=False|évite d’ajouter une colonne d’index| --- # 🧠 Mini-tâche 3 (5 min) Compléter : ```python df.to________("articles.csv", index=________) ``` --- # 8️⃣ Exemple complet : scraper + sauvegarder Script complet : ```python import requests from bs4 import BeautifulSoup import pandas as pd url = "https://example.com" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") articles = [] titles = soup.find_all("h1") for t in titles: article = { "title": t.text } articles.append(article) df = pd.DataFrame(articles) df.to_csv("articles.csv", index=False) ``` --- # 🧠 Mini-tâche 4 (10 min) Modifier le script pour ajouter une colonne : ``` url ``` --- # 9️⃣ Vérifier les données Avant de sauvegarder un dataset, il faut vérifier : ``` print(df.head()) ``` Cela affiche les **premières lignes**. --- Autres fonctions utiles : ``` df.shape ``` nombre de lignes et colonnes. ``` df.columns ``` noms des colonnes. --- # 🧠 Mini-tâche 5 (10 min) Ajouter au script : ``` print(df.head()) ``` et vérifier le dataset. --- # 🧩 Mini-projet du chapitre (30–45 min) ## 🎯 Objectif Créer un **pipeline complet de scraping** qui : 1️⃣ visite une page web 2️⃣ extrait les titres d’articles 3️⃣ stocke les résultats dans une liste 4️⃣ crée un DataFrame 5️⃣ sauvegarde les données en CSV --- # Étapes 1️⃣ Scraper la page : https://example.com 2️⃣ Extraire : title 3️⃣ Créer un dataset. 4️⃣ Sauvegarder dans : articles.csv --- # ✏️ Code à compléter ```python import requests from bs4 import BeautifulSoup import pandas as pd url = "https://example.com" response = requests.get(url) soup = BeautifulSoup(response.text, "________") articles = [] titles = soup.________("h1") for t in titles: article = { "title": t.________ } articles.append(article) df = pd.________(articles) df.to________("articles.csv", index=False) ``` --- # Résultat attendu CSV : ``` title Example Domain ``` --- # ⭐ Bonus Ajouter d’autres colonnes : ``` title url date ``` --- # ✅ Correction du mini-projet ```python import requests from bs4 import BeautifulSoup import pandas as pd url = "https://example.com" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") articles = [] titles = soup.find_all("h1") for t in titles: article = { "title": t.text } articles.append(article) df = pd.DataFrame(articles) df.to_csv("articles.csv", index=False) ``` --- # 🔎 Explication ### Liste de dictionnaires ``` articles = [] ``` stocke les données. --- ### Ajouter un article ``` articles.append(article) ``` --- ### Créer un DataFrame ``` pd.DataFrame(articles) ``` convertit les données en table. --- ### Export CSV ``` df.to_csv("articles.csv") ``` génère le dataset. --- # 🧠 Ce qu’il faut retenir Dans ce chapitre nous avons appris à : ✔ structurer les données de scraping ✔ utiliser **pandas** ✔ créer un **DataFrame** ✔ sauvegarder un **dataset CSV** --- ## 🗓️ Historique > **Dernière mise à jour :** `12 mars 2026` > **Rédigé par :** [[Jizhen CAI]]