ScrapYourFlat - Agrégateur d'Annonces Immobilières avec Web Scraping
Introduction
Chercher un appartement, c'est épuisant. Il faut naviguer entre plusieurs sites, comparer les annonces, vérifier les doublons... J'ai créé ScrapYourFlat pour automatiser tout ça : un outil qui scrappe les sites immobiliers et agrège les annonces dans une interface unique.
Le Problème
Quand on cherche un logement, on doit :
- Consulter plusieurs sites (SeLoger, LeBonCoin, PAP...)
- Répéter les mêmes critères de recherche partout
- Gérer les doublons entre sites
- Être réactif car les bonnes annonces partent vite
La Solution
ScrapYourFlat automatise la collecte et centralise toutes les annonces :
Backend - Web Scraping avec Scrapy
Scrapy est un framework Python puissant pour le scraping. Pour chaque site, j'ai créé un "spider" qui :
- Navigue sur les pages de résultats
- Extrait les informations clés (titre, prix, surface, localisation...)
- Nettoie et normalise les données
- Stocke le tout en base de données
Frontend - Interface de Recherche
Une web app Flask pour :
- Rechercher par critères (ville, budget, surface...)
- Filtrer et trier les résultats
- Voir les détails d'une annonce
- Marquer des favoris
Architecture Technique
Les Spiders Scrapy
class ImmoSpider(scrapy.Spider):
name = "immo"
def parse(self, response):
for annonce in response.css('.listing'):
yield {
'titre': annonce.css('.title::text').get(),
'prix': annonce.css('.price::text').get(),
'surface': annonce.css('.area::text').get(),
'ville': annonce.css('.location::text').get(),
}
Pipelines de Traitement
- CleaningPipeline : Nettoie les prix (retire "€", espaces...)
- DuplicationPipeline : Détecte et filtre les doublons
- DatabasePipeline : Sauvegarde en base SQLite/PostgreSQL
Configuration Anti-Ban
Le scraping responsable est crucial :
- Download Delay : Pause de 2s entre requêtes
- User-Agent rotatif : Simule différents navigateurs
- Respect du robots.txt : Éthique et légalité
- Limitation des requêtes concurrentes
Base de Données
Schéma simple mais efficace :
- ID, titre, prix, surface, nombre de pièces
- Ville, code postal, description
- URL source, date d'ajout, site d'origine
Fonctionnalités de Recherche
- Recherche par localisation (ville, quartier, code postal)
- Filtrage par budget (min/max)
- Filtrage par surface (m²)
- Type de bien (appartement, maison, studio...)
- Tri par prix, date, surface
Aspects Légaux et Éthiques
Important ! Le web scraping est dans une zone grise légale :
- Respecter les CGU des sites
- Ne pas surcharger les serveurs
- Usage personnel uniquement
- Ne pas revendre les données
Technologies Utilisées
- Python 3
- Scrapy (framework scraping)
- Flask (web app)
- SQLite/PostgreSQL
- BeautifulSoup (parsing HTML)
Projet personnel pour faciliter la recherche de logement - À utiliser de manière responsable !