Made byBobr AI

Web Scraping avec Python : Extraction de Données Livres

Découvrez un pipeline ETL pour automatiser l'extraction de données web. Apprenez le scraping avec Python, BeautifulSoup et Requests pour générer des fichiers CSV.

#python#web-scraping#beautifulsoup#etl#data-extraction#csv#automation#openclassrooms
Watch
Pitch

Projet : Scraping de livres – Books to Scrape

Formation OpenClassrooms – Parcours Développeur d'Application Python

A modern, minimal illustration of a digital library being analyzed by python code, data extraction concept, blue and white color scheme, high quality, 4k

Python | Requests | BeautifulSoup | CSV

Made byBobr AI

Objectifs du Projet

  • Extraire les informations produits de tous les livres
  • Parcourir et extraire toutes les catégories automatiquement
  • Gérer la pagination des résultats
  • Générer un fichier CSV distinct par catégorie
  • Mettre en place un pipeline ETL (Extract, Transform, Load)
Made byBobr AI

Vue d'ensemble de l'application

1. Accès Accueil
2. Extraction Catégories
3. Parcours Catégorie
4. Scraping Livres
👉 Application modulaire orchestrée par main.py et divisée en phases.
Made byBobr AI

Architecture & Structure des fichiers

project/ │ ├── main.py ├── phase1.py ├── phase2.py ├── phase3.py ├── phase4.py ├── scraper_utils.py ├── requirements.txt ├── .gitignore │ └── scraped_data/ ├── csv/ │ ├── Travel.csv │ └── ... │ └── images/ ├── book_001.jpg └── ...

Organisation Optimisée

Orchestration : main.py
Logique : Phases 1 à 4
Outils : scraper_utils.py (DRY)
Made byBobr AI

Architecture : Une approche structurée

🧩 Modulaire

  • Phases indépendantes :
    Files phase1 à phase4 séparés
  • Responsabilité unique :
    Chaque fichier a un rôle précis
  • Code réutilisable et facile à tester

⚙️ Orchestré

  • Pilote unique :
    main.py ne "travaille" pas, il gère
  • Menu utilisateur :
    Coordination interactive des phases
  • Séparation entre la logique métier et l'exécution

💡 Centralisé (DRY)

  • scraper_utils.py :
    Centralise les fonctions communes
  • Pas de répétition :
    Respect du principe DRY
  • Maintenance aisée :
    Une modification se propage partout
Made byBobr AI

Pipeline ETL et Architecture

Le pipeline ETL du projet est directement lié à cette architecture modulaire. Chaque étape du pipeline correspond à des responsabilités clairement identifiées et isolées dans le code (fases 1 à 4).

EXTRACT

Récupération brute (Requests, BS4) depuis le site web.

TRANSFORM

Nettoyage et structuration des données.

LOAD

Sauvegarde en CSV et téléchargement des images.

Made byBobr AI

EXTRACT (Extraction)

Infrastructure

  • Extraction gérée par phase1.py à phase4.py.
  • Fonctions d'extraction centralisées dans scraper_utils.py.
  • Orchestration globale via main.py.

Méthodologie

  • Utilisation de requests (HTML) et BeautifulSoup (Parsing).
  • Extraction ciblée : Catégories, URLs, Infos produits.

🛡️ Gestion des champs manquants

  • Vérification systématique des balises HTML avant accès.
  • Valeur par défaut ("N/A") si une donnée est absente.
  • Continuité garantie : Le pipeline ne plante pas sur une erreur.
Made byBobr AI

Étape 2 : TRANSFORM (Nettoyage)

Objectif : Rendre les données propres et exploitables.

  • 🛠️ URL Relatives ➔ URL Absolues
  • 🧹 Nettoyage et Gestion des descriptions manquantes
  • 📦 Structuration via Dictionnaire Python
Conceptual illustration of data cleaning, messy unorganized blocks turning into neat organized colorful cubes, minimal vector style, isometric
Made byBobr AI

Étape 3 : LOAD (Chargement)

Sauvegarde structurée pour usage Data / BI.

📂 Fichiers CSV
Un fichier par catégorie.
En-têtes conformes.
Compatible Excel/Pandas.
🖼️ Images
Téléchargement local.
Nommage cohérent.
Dossier séparé.
Made byBobr AI

Données Extraites (Champs)

Product Page URL
Universal Product Code (UPC)
Title
Price Including Tax
Price Excluding Tax
Number Available
Product Description
Category
Review Rating
Image URL
Made byBobr AI

Démonstration Live

1. Lancement : python scraper.py
2. Logs temps réel dans le terminal
3. Vérification des sorties CSV et Images
$ python scraper.py > Start scraping... > Category: Travel | Books found: 11 > Processing: It's Only the Himalayas... > Saved: scraped_data/csv/Travel.csv > Category: Mystery | Books found: 32 > ... > Done.
Made byBobr AI

Conclusion & Améliorations

✅ Bonnes Pratiques

• Environnement virtuel utilisé
• Conformité stricte aux consignes (champs)
• Code modulaire et commenté

🚀 Améliorations Futures

• Gestion asynchrone (aiohttp) pour la vitesse
• Stockage en base de données (SQLite/PostgreSQL)
• Interface graphique ou Logs avancés

Made byBobr AI
Bobr AI

DESIGNER-MADE
PRESENTATION,
GENERATED FROM
YOUR PROMPT

Create your own professional slide deck with real images, data charts, and unique design in under a minute.

Generate For Free

Web Scraping avec Python : Extraction de Données Livres

Découvrez un pipeline ETL pour automatiser l'extraction de données web. Apprenez le scraping avec Python, BeautifulSoup et Requests pour générer des fichiers CSV.

Projet : Scraping de livres – Books to Scrape

Formation OpenClassrooms – Parcours Développeur d'Application Python

Python | Requests | BeautifulSoup | CSV

Objectifs du Projet

Extraire les informations produits de tous les livres

Parcourir et extraire toutes les catégories automatiquement

Gérer la pagination des résultats

Générer un fichier CSV distinct par catégorie

Mettre en place un pipeline ETL (Extract, Transform, Load)

Vue d'ensemble de l'application

1. Accès Accueil

2. Extraction Catégories

3. Parcours Catégorie

4. Scraping Livres

5. Sauvegarde CSV/Img

Application modulaire orchestrée par <b>main.py</b> et divisée en phases.

Architecture & Structure des fichiers

project/ │ ├── main.py ├── phase1.py ├── phase2.py ├── phase3.py ├── phase4.py ├── scraper_utils.py ├── requirements.txt ├── .gitignore │ └── scraped_data/ ├── csv/ │ ├── Travel.csv │ └── ... │ └── images/ ├── book_001.jpg └── ...

✅ <b>Orchestration :</b> main.py<br>✅ <b>Logique :</b> Phases 1 à 4<br>✅ <b>Outils :</b> scraper_utils.py (DRY)

Architecture : Une approche structurée

Principe DRY (Don't Repeat Yourself)

<li style='margin-bottom: 20px;'>📉 Limiter la duplication de code</li><li style='margin-bottom: 20px;'>🛠 Faciliter la maintenance</li><li>📖 Améliorer la lisibilité</li>

Architecture Modulaire

Une approche décentralisée où chaque fonction et chaque module a un rôle défini.

Chaque composant possède une responsabilité claire et unique.

Modulaire

<ul style='padding-left: 20px; margin: 0;'> <li style='margin-bottom: 15px;'><strong>Phases indépendantes</strong> : <br>Files <code>phase1</code> à <code>phase4</code> séparés</li> <li style='margin-bottom: 15px;'><strong>Responsabilité unique</strong> : <br>Chaque fichier a un rôle précis</li> <li><strong>Code réutilisable</strong> et facile à tester</li> </ul>

Orchestré

<ul style='padding-left: 20px; margin: 0;'> <li style='margin-bottom: 15px;'><strong>Pilote unique</strong> : <br><code>main.py</code> ne "travaille" pas, il gère</li> <li style='margin-bottom: 15px;'><strong>Menu utilisateur</strong> : <br>Coordination interactive des phases</li> <li><strong>Séparation</strong> entre la logique métier et l'exécution</li> </ul>

Centralisé (DRY)

<ul style='padding-left: 20px; margin: 0;'> <li style='margin-bottom: 15px;'><strong>scraper_utils.py</strong> : <br>Centralise les fonctions communes</li> <li style='margin-bottom: 15px;'><strong>Pas de répétition</strong> : <br>Respect du principe DRY</li> <li><strong>Maintenance aisée</strong> : <br>Une modification se propage partout</li> </ul>

Pipeline ETL et Architecture

EXTRACT

Récupération brute (Requests, BS4) depuis le site web.

TRANSFORM

Nettoyage et structuration des données.

LOAD

Sauvegarde en CSV et téléchargement des images.

Le pipeline ETL du projet est directement lié à cette architecture modulaire. Chaque étape du pipeline correspond à des responsabilités clairement identifiées et isolées dans le code (fases 1 à 4).

EXTRACT (Extraction)

<ul><li>Extraction gérée par <b>phase1.py</b> à <b>phase4.py</b>.</li><li>Fonctions d'extraction centralisées dans <b>scraper_utils.py</b>.</li><li>Orchestration globale via <b>main.py</b>.</li></ul>

<ul><li>Utilisation de <b>requests</b> (HTML) et <b>BeautifulSoup</b> (Parsing).</li><li>Extraction ciblée : <b>Catégories, URLs, Infos produits</b>.</li></ul>

soup = BeautifulSoup(response.content, 'html.parser') product_page = soup.find('article', class_='product_page')

Gestion des champs manquants

<li><b>Vérification systématique</b> des balises HTML avant accès.</li><li><b>Valeur par défaut ("N/A")</b> si une donnée est absente.</li><li><b>Continuité garantie</b> : Le pipeline ne plante pas sur une erreur.</li>

Étape 2 : TRANSFORM (Nettoyage)

Objectif : Rendre les données propres et exploitables.

URL Relatives ➔ URL Absolues

Nettoyage et Gestion des descriptions manquantes

Structuration via Dictionnaire Python

Étape 3 : LOAD (Chargement)

Sauvegarde structurée pour usage Data / BI.

📂 Fichiers CSV<br><span style='font-size:22px; color: #7f8c8d'>Un fichier par catégorie.<br>En-têtes conformes.<br>Compatible Excel/Pandas.</span>

🖼️ Images<br><span style='font-size:22px; color: #7f8c8d'>Téléchargement local.<br>Nommage cohérent.<br>Dossier séparé.</span>

Données Extraites (Champs)

Product Page URL

Universal Product Code (UPC)

Title

Price Including Tax

Price Excluding Tax

Number Available

Product Description

Category

Review Rating

Image URL

Démonstration Live

1. Lancement : python scraper.py<br>2. Logs temps réel dans le terminal<br>3. Vérification des sorties CSV et Images

$ python scraper.py > Start scraping... > Category: Travel | Books found: 11 > Processing: It's Only the Himalayas... > Saved: scraped_data/csv/Travel.csv > Category: Mystery | Books found: 32 > ... > Done.

Conclusion & Améliorations

✅ Bonnes Pratiques

• Environnement virtuel utilisé<br>• Conformité stricte aux consignes (champs)<br>• Code modulaire et commenté

🚀 Améliorations Futures

• Gestion asynchrone (aiohttp) pour la vitesse<br>• Stockage en base de données (SQLite/PostgreSQL)<br>• Interface graphique ou Logs avancés

  • python
  • web-scraping
  • beautifulsoup
  • etl
  • data-extraction
  • csv
  • automation
  • openclassrooms