laberge — Gestion immobilière Laberge
- site: https://www.laberge.qc.ca/recherche
- méthode: html (page liste rendue serveur + fiches unités)
- annonces: 54 → 54
- couverture après (sur 54 annonces): prix 100%, adresse 100%, dispo 100%, superficie 7%, commodités 100%
- fixture: ok · test: ok (2 passed)
Champs extraits
- Page liste (/recherche) : complexe, adresse de la carte, ville (filtre Québec/Lévis/L'Ancienne-Lorette), type d'unité, prix « Débutant », disponibilité, code d'unité (
data-href). - Fiche unité (via
self.detail(), cache BD, max 150 nouveaux fetchs/sync) :- bloc structuré h3→p « Grandeur / Étage / Disponibilité / Superficie / Débutant » :
area_sqftexplicite (structuré à la source),details.floor, dispo de secours ; - adresse complète de l'immeuble avec code postal (h3 « Adresse », lien « Autres adresses » retiré) ;
- secteur (arrondissement) depuis le
<title>(Beauport, Sainte-Foy, etc. — 9 secteurs) ; - inclusions de l'unité (pictos non grisés : Chauffage/Électricité/Eau chaude, Poêle et réfrigérateur, Lave-vaisselle, Air climatisé…) ;
- caractéristiques en liste
<ul><li>(nouveau) : « Entrée laveuse, sécheuse », « Balcon privé : 72 pi² », « Stationnement extérieur : inclus », hauteur de plafonds, insonorisation… ; - services de l'immeuble + dispositifs de sécurité (nouveau) : buanderie, rangement, stationnement intérieur/extérieur, ascenseur, carte d'accès, caméra, intercom, accès mobilité réduite ;
- description marketing du complexe, photos de l'unité.
- bloc structuré h3→p « Grandeur / Étage / Disponibilité / Superficie / Débutant » :
Champs indisponibles à la source
- Superficie publiée sur ~7 % des unités seulement (immeubles récents comme Le 224) ; idem pour l'étage.
- Politique animaux / fumeur : jamais mentionnée.
- Meublé : seulement l'avertissement générique « frais additionnels pour semi-meublés » (pas par unité).
- Lat/lng du complexe : absent (seuls les POI « À proximité » ont des coordonnées — non utilisés).
Fragilités
- Détection des inclusions par pictogrammes : repose sur
style="color:#ccc"/ suffixe_off.des SVG pour les exclusions. - L'adresse des complexes multi-immeubles (Le Charleroi) ne donne que la première adresse ; « Autres adresses » est dans un collapse non extrait.
- Les lignes du tableau des unités mêlent logements et stationnements/rangements : filtre regex
EXCLUDE_UNIT_RE. - Le secteur vient du
<title>— dépend du format « Appartement - - ».
Améliorations apportées
- Fiches unités passées sur
self.detail()(cache BD ; auparavant les 54 fiches étaient re-visitées à chaque sync) avec budgetmax_details=150(exception_DetailBudget). area_sqftetdetails.floorextraits du bloc structuré h3→p (auparavant : injectés en texte dans la description).- Adresse enrichie du code postal depuis la fiche (avant : adresse de carte sans code postal, parfois liste de 6 numéros civiques).
- Commodités : ajout des listes
<ul><li>de caractéristiques (auparavant ignorées) + services d'immeuble + dispositifs de sécurité → 0 annonce sans commodités (avant : 6) ;details.parking/inclusionsdérivés présents sur 54/54. - Dédup des libellés, nettoyage des espaces multiples dans les
<li>.
Échantillon avant/après
Le 224 — 3½ (#1-0614) (1490 $, dispo now, 742 pi²)
- avant : address=
224, rue seigneuriale, amenities=6 pictos, details={"inclusions":{"hot_water":true},"appliances":{"fridge":true,"dishwasher":true,"washer_dryer_hookup":true},"ac":true,"floor":6} - après : address=
224 rue seigneuriale, Québec, G1E 0M8, amenities=29 items (quartz, insonorisation, stationnements, sécurité…), details={"inclusions":{"heating":false,"hot_water":true},"appliances":{fridge,stove,dishwasher,washer_dryer_hookup},"ac":true,"elevator":true,"balcony":true,"storage":true,"parking":{"available":true,…},"floor":6}+ area_sqft=742 structuré
Le 2910 Canardière — 4½ (#2910-34) (1090 $, Septembre 2026)
- avant : details=
{"inclusions":{"heating":true,"hot_water":true}}, address sans code postal - après : details=
{"inclusions":{"heating":true,"hot_water":true},"appliances":{"washer_dryer_hookup":true},"balcony":true,"laundry":true,"storage":true,"parking":{"available":true,"type":"extérieur"}}, address=2910 boulevard Mgr Gauthier, Québec, G1E 2V2
Lacune générique de normalisation détectée
normalize.py: le motif négatif deheating(non chauffe) matche « Stationnement intérieur non chauffé : des frais… » →inclusions.heating=falseerroné pour Le 224 alors que seul le stationnement est non chauffé. Le motif devrait exclure le contexte « stationnement/garage ».