---
# 🎯 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]]