spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# elements — Quartier les Éléments2- site: https://www.quartierleselements.com/appartements-condos-locatifs-levis (phases -> étages -> fiches d'unités)3- méthode: html4- annonces: 3 → 35- couverture après (sur 3 annonces): prix 100%, adresse 100%, dispo 100%, superficie 100%, commodités 100%6- fixture: ok · test: ok78## Champs extraits9- Fiche d'unité : grandeur (« 3 1/2 » -> 3½), prix (« 1216$ en cession pour octobre 2026 »), disponibilité (mois/année extraits de la ligne de prix), superficie brute/terrasse/totale (description), « Avec boudoir / Avec bureau » (commodité).10- NOUVEAU — `area_sqft` explicite depuis « Superficie brute » (structurée à la source). Avant, la normalisation générique prenait le min de toutes les superficies de la description et retournait la TERRASSE (126 pi² au lieu de 890 pi²).11- NOUVEAU — `details.floor` depuis le segment `/etage-N/` de l'URL de la fiche (structuré).12- NOUVEAU — `details.contact` (téléphone + courriel du bureau de location affichés sur chaque fiche).13- NOUVEAU — commodité « Terrasse » quand la fiche affiche une superficie de terrasse.14- Adresse du complexe (1432, rue de Jupiter, Lévis), secteur Saint-Romuald, images (plans + galerie uploads).1516## Champs indisponibles à la source17- Inclusions (chauffage, électricité…), électroménagers, animaux, meublé, stationnement : les fiches d'unités n'affichent rien de tel.18- Adresse civique par phase/immeuble (seule l'adresse du bureau de location est publiée).19- Coordonnées GPS.2021## Fragilités22- Parsing par regex sur le texte de la page (« Grandeur : », « Prix : », « Superficie … : ») : sensible aux reformulations.23- La découverte passe par les `<area data-available="1">` des plans d'étages interactifs : un changement de plugin de plan casserait la découverte.24- Le libellé de prix « en cession pour <mois> » sert aussi de disponibilité ; si le site change ce format, la date disparaît (repli : « Disponible »).2526## Améliorations apportées27- Correction majeure de la superficie : 126 pi² (terrasse, via min() générique) -> 890/953/952 pi² (superficie brute explicite).28- Étage structuré dans `details.floor`.29- Contact du bureau de location dans `details.contact`.30- Commodité « Terrasse » ajoutée quand présente.3132## Échantillon avant/après33- AVANT : `Phase 2, unité 105 (3½) | 1216 | 3½ | Disponible (octobre 2026) | 2026-10-01 | 126 pi² | {"balcony": true}`34- APRÈS : `Phase 2, unité 105 (3½) | 1216 | 3½ | Disponible (octobre 2026) | 2026-10-01 | 890 pi² | {"balcony": true, "contact": {"phone": "581-922-3334", "email": "info@quartierleselements.com"}, "floor": 1}`3536## Lacune générique notée37- `parse_area_sqft` retourne `min()` de toutes les superficies trouvées : quand une description contient « Superficie terrasse : 126 pi² » et « Superficie brute : 890 pi² », le générique choisit la terrasse. Contournée ici par un `area_sqft` explicite ; à corriger dans normalize.py (ex. ignorer les superficies précédées de « terrasse/balcon », ou préférer « brute/habitable »).38