Projet

Book Scraper

Web Scraping
API
Docker

Explorer le projet sur GitHub

A bright pink sheet of paper used to wrap flowers curves in front of rich blue background

Introduction

Les livres racontent des histoires, mais ce sont les lecteurs qui écrivent leur succès.

Ce projet a pour objectif d’améliorer le catalogue de vente en ligne d’une librairie en proposant, sur sa page d’accueil et dans ses campagnes de communication (newsletter, réseaux sociaux), une liste des livres les mieux notés et les plus appréciés par les clients. Les données récupérées et traitées sont mises à disposition des équipes de data analysts pour réaliser, par exemple, des analyses de sentiment sur les avis des clients. De plus, ces données sont accessibles aux différentes équipes métiers pour améliorer leurs prises de décision stratégiques et opérationnelles. Les données sont ensuite exposées via une API construite avec FastAPI pour une intégration facile avec d’autres systèmes.

Architecture du Projet

Pipeline de Données

Le pipeline de données est conçu pour scraper les informations sur les livres depuis Amazon, les transformer, les stocker dans une base de données MongoDB, et enfin les exposer via une API construite avec FastAPI, laquelle est encapsulée dans un conteneur Docker pour faciliter le déploiement.

Planification et Orchestration

Airflow est utilisé pour orchestrer l’exécution de l’ETL une fois par mois à 7h du matin, le premier jour du mois. Le DAG Airflow est composé de trois tâches exécutées séquentiellement : extraction, transformation et chargement des données.

Description des Données

Les données sont extraites directement du site d’Amazon puis exportées au format JSON et stockées dans MongoDB. Chaque observation contient les caractéristiques suivantes :

  • title : Titre du livre.
  • price : Prix du livre.
  • rating : Note moyenne du livre.
  • reviews : Nombre d’avis.
  • author : Auteur du livre.
  • image_url : URL de l’image de couverture.
  • book_url : URL de la page du livre sur Amazon.
  • additional_info : Informations supplémentaires comme l’éditeur, la langue, le nombre de pages, ISBN10, ISBN13, etc.
  • customer_reviews : Liste d’avis clients comprenant le titre de l’avis, le texte, l’auteur et la date.