Cette application est un système de scraping et d'analyse de jeux Steam, composé de plusieurs parties :
Le composant Select de shadcn n'enlève pas les anciennes options lorsqu'on les remplace par les nouvelles lors du search, les nouvelles sont tout en bas. En cliquant en dehors du composant, les options sont mises à jour.
- Un pipeline ETL (Extract, Transform, Load) qui :
- Extrait les données des jeux Steam via web scraping
- Transforme et nettoie les données récupérées
- Charge les données dans une base MongoDB
- MongoDB stockant les informations sur :
- Les jeux (titre, développeur, éditeur, etc.)
- Les configurations requises (CPU, GPU, RAM, etc.)
- Les systèmes d'exploitation supportés
- Les technologies utilisées
- Une API REST qui expose les données via différents endpoints
- Permet d'interroger la base pour obtenir :
- La liste des jeux
- Les détails d'un jeu spécifique
- Les configurations requises
- Un frontend React qui permet de visualiser les données et de les filtrer
- Utilise l'API Flask pour obtenir les données
- Affiche les jeux dans un tableau et permet de les filtrer
- Un script Python qui permet de scraper les données hardware (CPU, GPU, RAM, etc.)
- Utilise Scrapy pour scraper les données
- Utilise MongoDB pour stocker les données
- Python 3.x
- MongoDB
- Les dépendances Python listées dans
requirements.txt
git clone https://github.com/SwerkF/SteamScraperpython -m venv venv
source venv/bin/activatepip install -r requirements.txtcd frontend
npm installVITE_API_BASE_URL="http://localhost:5000"cd frontend
npm run dev# MongoDB
MONGODB_ROOT_USERNAME=root
MONGODB_ROOT_PASSWORD=password
MONGODB_DATABASE=steam_games
# MongoDB Express
ME_CONFIG_MONGODB_ADMINUSERNAME=root
ME_CONFIG_MONGODB_ADMINPASSWORD=password
ME_CONFIG_MONGODB_SERVER=mongodb
#URI pour Atlas par exemple
MONGO_URI="mongodb://root:password@localhost:27017"
DB_NAME="steam_games"docker compose up -dDes dumps sont disponibles dans le dossier dumps pour les jeux déjà scrapés.
Ordre d'imports: cpu > gpu > memory > os > games
cd flask
flask --app main runcd steamscrapy
scrapy crawl hardwarecd etl_pipeline
python run_etl.pyCe processus est long, il peut prendre plusieurs heures. Si vous voulez scraper moins de jeux, vous devez modifier les fichiers:
etl_pipeline/etl/extract/steamDB_charts.py> CTRL + F, et remplacer les valeurs "101" par le nombre de jeux que vous voulez scraper.etl_pipeline/etl/extract/steamDB_config.py> CTRL + F, et remplacer les valeurs "100" par le nombre de jeux que vous voulez scraper.etl_pipeline/etl/extract/steamDB_games-details.py> CTRL + F, et remplacer les valeurs "100" par le nombre de jeux que vous voulez scraper.
Les résultats sont stockés dans la base MongoDB.










