leclif — Le Clif (condos locatifs, Charlesbourg)
- site: https://leclif.ca/
- méthode: html (mono-page : 151 overlays d'unités, script jQuery marque les louées)
- annonces: 9 → 9
- couverture après (sur 9 annonces): prix 100%, adresse 100%, dispo 100%, superficie 100%, commodités 100%
- fixture: ok · test: ok (2 passed)
Champs extraits
- Par unité (overlay) : numéro, prix « À partir de NNN (incluant électros) $ / mois », disponibilité (« Disponibilité : octobre »), type (5½…), modèle, superficie →
area_sqftstructuré (champ étiqueté « Superficie : », distinct de « Terrasse : »), terrasse (description), aperçu du plan (jpg) + plan PDF. - Immeuble (nouveau) : liste des avantages
ul.liste-icones→ 15 commodités réelles (eau chaude fournie, internet inclus, air climatisé inclus, piscine extérieure chauffée, gym tout équipé, salle commune, golf virtuel, terrasse sur le toit, rangements vélos $, stationnements int/ext $, borne électrique $, feux de camp…). pets="conditions"structuré (nouveau) : l'item « Chiens et chats acceptés » porte une infobulle détaillant les conditions (chiens selon étage/poids <50 lb, deux chats max) → libellé « (sous conditions) » + champ pets explicite.- lat/lng (nouveau) : extraits du lien Google Maps de la page (
!3d46.8934679!4d-71.2986717). - Adresse complétée du code postal G1G 0L1 (affiché sur la page).
Champs indisponibles à la source
- Meublé : non mentionné.
- Étage de l'unité : non affiché (déductible du numéro mais ce serait une inférence — non faite).
- Chauffage inclus/exclu : jamais énoncé explicitement (voir lacune générique ci-dessous).
Fragilités
- Les unités louées sont détectées via le script inline
jQuery('.unite-N').addClass('non-dispo')— fragile si le thème change. - Les électroménagers sont « moyennant des frais mensuels » au niveau immeuble mais « incluant électros » dans le prix de certaines unités : ambigu à la source.
- L'infobulle animaux est le seul endroit où les conditions apparaissent (sélecteur
.is-description).
Améliorations apportées
- Bug corrigé :
area_sqftprenait la superficie de la terrasse (min des superficies de la description : 176 pi² < 1156 pi²). Champ « Superficie : » désormais parsé en structuré → 100 % correct. - Commodités : de 0 (
amenities=[]sur 9/9) à 15 items réels →detailspasse de{balcony, price_from}à{inclusions{hot_water,internet}, appliances, ac, pool, gym, storage, parking{type,included:false}, pets}. pets="conditions"structuré (avant : None).- lat/lng de l'immeuble (avant : géocodage).
- Code postal ajouté à l'adresse.
Échantillon avant/après
Le Clif — Unité 115 (5½) (2366 $, octobre)
- avant : area_sqft=176 (terrasse !), pets=None, amenities=[], details=
{"balcony":true,"price_from":true}, lat/lng absents - après : area_sqft=1156, pets=
conditions, amenities=15 items, details={"inclusions":{"hot_water":true,"internet":true,…},"ac":true,"pool":true,"gym":true,"storage":true,"parking":{"available":true,"type":"intérieur et extérieur","included":false},"pets":"conditions","price_from":true}, lat=46.8934679/lng=-71.2986717
Lacunes génériques de normalisation détectées
- « Piscine extérieure chauffée » déclenche
inclusions.heating=true(motifchauffe[e]?trop large — même famille que le faux négatif « stationnement non chauffé » vu sur laberge). Le motif chauffage devrait ignorer piscine/stationnement/garage chauffés. - « Cinq électroménagers (moyennant des frais mensuels) » n'est pas neutralisé par
_NEUTRAL_RE(qui couvre « sur demande / en option / $ ») →appliances.fridge=truedérivé alors que c'est une option payante.