Skip to content
# gestipro — Gestipro
- site: https://gestipro.info/a-louer/
- méthode: html
- annonces: 96 → 96
- couverture après (sur 96 annonces): prix 100%, adresse 100%, dispo 100%, superficie 23%, commodités 99%
- fixture: ok · test: ok
- Carte liste (Houzez) : titre, adresse + secteur (Nominatim), prix (
item-price, virgule = milliers), statuts de disponibilité (label-status), type d'unité (h-type), vignette.
- Fiche détail (nouveau, via
self.detail + cache BD) :
- description complète
#property-description-wrap (1200 c., avant : og:description 600 c.) ;
- bloc « Détails » structuré (paires
strong/span) : Dimensions de la propriété (pi², structuré → area_sqft), Animaux toléré (→ pets oui/non/conditions, ex. « Chat seulement » → conditions), Frais et charge (ajouté aux amenities, ex. « Chauffage, eau chaude et électricité inclus »), Disponibilité (texte complet) ;
- géolocalisation lat/lng depuis le JSON-LD schema.org
Place.geo (96/96) ;
- caractéristiques
#property-features-wrap + galerie complète.
# Champs indisponibles à la source
- Superficie : seuls ~23 % des fiches exposent « Dimensions de la propriété ».
- Meublé : jamais mentionné.
- Chambres/salles de bain exposées sur la carte et la fiche mais sans clé canonique
details correspondante (non retenu).
- « Année de construction », « Enquête de crédit » : sans équivalent schéma.
# Fragilités
- Thème Houzez WordPress : sélecteurs
.item-listing-wrap[data-hz-id], #property-detail-wrap .list-lined-item — un changement de thème casserait le parsing.
- Le JSON-LD
Place annonce priceCurrency: USD (coquille du site) — on n'utilise que geo.
- Adresse Nominatim verbeuse (« …, Québec, QC, Canada, Charlesbourg, Québec ») : le découpage par virgules reste heuristique.
# Améliorations apportées
- Pages détail désormais servies par le cache BD (
self.detail, clé = hash de la carte liste) + budget de 150 vraies requêtes (compteur dans _fetch_detail, levée d'exception au-delà → pas de cache pollué).
- Extraction du bloc « Détails » : superficie structurée (5 → 22 annonces avec
area_sqft), animaux (pets sur 88/96), frais et charge (inclusions dérivées par finalize), disponibilité complète.
- Description complète (au lieu du meta og tronqué), lat/lng (0 → 96/96).
# Échantillon avant/après
- Avant : « 7170 boul. Cloutier – Le Maria-Goretti » — 2427 $, 5½, dispo « 1er juillet 2027, Dans les mois à venir », area NULL, pets NULL, pas de lat/lng, inclusions {hot_water, internet}.
- Après : même annonce — pets=conditions (« Chat seulement »), lat/lng 46.8518/-71.2747, description complète (ESPACE DE VIE / FRAIS ET CHARGE / IMMEUBLES), amenities + « Frais et charge : Eau chaude et wifi inclus ».
- Après : « 1490-1500 Maire-Beaulieu – Bourg de Coulonge » (studio) — area_sqft 456 (structuré), pets=conditions, inclusions {heating, electricity, hot_water}.
# Lacunes génériques de normalisation observées
- « Chauffage et électricité à la charge des locataires » n'est pas reconnu comme négatif →
heating/electricity: true à tort quand la description le mentionne.
- « Actuellement vacant » n'est pas reconnu par
parse_availability_date → availability_date NULL alors que le logement est libre.