Scraper automatisé qui récupère les images de Pokemon depuis Bulbapedia et les stocke dans Amazon S3 via une instance EC2.
Composants :
- EC2 (t2.micro) : Environnement d'exécution Python
- S3 : Stockage des images avec accès public
- IAM : Gestion des permissions sécurisée
- Compte AWS avec accès Free Tier
- Instance EC2 Ubuntu 22.04
- Python 3.10+
- Console AWS → IAM → Utilisateurs → Créer un utilisateur
- Nom :
pokemon-scraper - Accès par programmation : Activé
- Créer une politique avec ces permissions :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::pokemon-images-*"
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject"],
"Resource": "arn:aws:s3:::pokemon-images-*/images/*"
}
]
}- Console AWS → S3 → Créer un compartiment
- Nom :
pokemon-images-[votre-nom](remplacer [votre-nom]) - Région :
eu-west-3(Paris) - Bloquer l'accès public : Décocher toutes les cases
- Ajouter cette politique de compartiment :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::pokemon-images-VOTRE-NOM/images/*"
}
]
}- Console AWS → EC2 → Lancer une instance
- Configuration :
- AMI : Ubuntu Server 22.04 LTS
- Type : t2.micro (Free Tier obligatoire)
- Paire de clés : Créer une nouvelle
- Security Group : SSH (22), HTTP (80), HTTPS (443)
ssh -i votre-cle.pem ubuntu@IP-EC2# Mise à jour du système
sudo apt update && sudo apt install python3-pip python3-venv awscli -y
# Création de l'environnement virtuel
python3 -m venv pokemon_env
source pokemon_env/bin/activate
# Installation des dépendances
pip install requests beautifulsoup4 boto3 lxmlaws configureSaisir :
- Access Key ID : [votre clé IAM]
- Secret Access Key : [votre clé secrète IAM]
- Default region :
eu-west-3 - Default output format :
json
# Cloner le projet
git clone https://github.com/Kdnuebe/pokemon-scraper.git
cd pokemon-scraper
# Modifier le nom du bucket dans le script
nano pokemons_scraper.py
# Ligne 11 : BUCKET_NAME = "pokemon-images-votre-nom"
# Lancer le scraper
python3 pokemon_sscraper.pyLe script télécharge et stocke 10 images de Pokemon avec des URLs publiques :
https://pokemon-images-khalil.s3.eu-west-3.amazonaws.com/images/pokemon/001_Bulbasaur.pnghttps://pokemon-images-khalil.s3.eu-west-3.amazonaws.com/images/pokemon/002_Ivysaur.png- Etc.
MAX_POKEMON: Nombre de Pokemon à traiter (défaut : 10)DELAY: Délai entre requêtes (défaut : 2 secondes)MAX_RETRIES: Tentatives maximum par téléchargement (défaut : 2)
- Sécurité : Clés AWS via profil IAM, jamais en dur dans le code
- Permissions : Principe du moindre privilège (accès S3 limité)
- Respect serveur : Délai entre requêtes, User-Agent identifiant
- Gestion d'erreurs : Retry automatique, logging complet
- Free Tier : Configuration optimisée pour rester gratuit
- Performance : 25 secondes pour 10 Pokemon
- Taux de succès : 100%
- Coût AWS : 0 euros (Free Tier)
- Taille moyenne : 9KB par image
Une fois le projet terminé :
- Arrêter l'instance EC2 (pas supprimer) pour éviter la consommation d'heures
- Garder le bucket S3 avec les images pour la démonstration
- Les URLs publiques restent fonctionnelles même instance arrêtée
Voir le rapport technique complet dans docs/rapport_technique.md