spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# boardwalk — Boardwalk REIT (Grand Montréal)2- site: https://www.bwalk.com/fr-ca/appartements-a-louer-a-montreal-* (Longueuil, Laval, Île-des-Sœurs/Verdun, Ville Saint-Laurent)3- méthode: html (HubSpot CMS rendu serveur)4- annonces: 100 → 1005- couverture après (sur 100 annonces): prix 100%, adresse 100%, dispo 100%, superficie 100%, commodités 100%6- fixture: ok · test: ok (2 passed)78## Champs extraits9- **Page propriété** :10 - en-tête `p.address-and-phone` → **adresse complète avec code postal** (avant : texte alt d'une photo, sans code postal) + **téléphone** → `details.contact.phone` — nouveau ;11 - cartes de types de suites (`div.card-properties`) : nom, prix « À partir de », **superficie (pi ca)** (simple, plage « 648 - 760 » ou avec séparateur de milliers « 1 408 »), **c. à c. / sdb** — lus directement sur la carte (avant : regex fragiles sur la page de suite, 0 % de réussite) ;12 - groupe parent `div.unit_type` : statut réel — « N logement(s) disponible(s) » ou « Sur la liste d'attente » (avant : « Disponible » codé en dur) ;13 - description (« Description de la propriété » / og:description), commodités (« Caractéristiques et espaces d'agrément » : piscine, sauna, ascenseur, eau/chauffage/électricité, stationnement…), galerie photo hubfs.14- **Page de suite** : ne sert plus qu'aux photos spécifiques du type de suite, via `self.detail()` (clé = sha1(url + texte de la carte)) — plus de refetch à chaque sync.1516## Champs indisponibles à la source17- Animaux : politique non affichée sur les fiches (formulaire seulement).18- Meublé, étage, date précise de disponibilité par unité : non exposés (uniquement le nombre de logements disponibles par type).19- Pas d'API JSON ni de ld+json : tout est du HTML serveur.2021## Fragilités22- La superficie de la carte est ambiguë : « Superficie (pi ca) : 1 408 3 c. à c. » mélange séparateur de milliers et nombre de chambres — la regex s'arrête avant « N c. à c. » (testée sur les 4 formats observés). Un nouveau format pourrait la fausser.23- Classes HubSpot (`highlight-suite`, `card-properties`, `unit_type`, `address-and-phone`) cassables à la refonte.24- Pages lourdes (300-400 Ko) : la fixture fait ~9 Mo pour 24 requêtes ; les photos de suite sont exclues du mode record/replay (via `use_detail_cache`) pour éviter ~100 pages de plus.25- Suites « liste d'attente » incluses avec availability = « Sur la liste d'attente » (date normalisée None) — à filtrer côté frontend si non désiré.26- `max_properties = 25` : couvre les 17 propriétés actuelles, marge si Boardwalk en ajoute.2728## Améliorations apportées29- Superficie : 0 % → 100 % (borne basse de la plage en texte brut « N pi ca », dérivée par finalize()).30- Adresse avec code postal + téléphone (`details.contact.phone`).31- Disponibilité réelle par type de suite (« 2 logement(s) disponible(s) », « Sur la liste d'attente ») au lieu d'un « Disponible » codé en dur.32- c. à c. / sdb ajoutés à la description ; suppression des deux regexes cassées sur les pages de suites.33- Pages de suites (photos) mises en cache BD via `self.detail()` : sync ~54 s au lieu de ~210 s.3435## Échantillon avant/après36**Domaine d'Iberville Apartments — 3 1/2 Pièces** (1199 $, 3½)37- avant : availability=`Disponible` (codé en dur), area_sqft=None, address=`101-300 Rue Joliette, Montréal - Longueuil` (sans code postal), details sans contact38- après : availability=`2 logement(s) disponible(s)`, area_sqft=648, address=`101-300 Rue Joliette, Montréal - Longueuil, J4H 2G5`, details=`{…, "contact": {"phone": "450-679-1330"}}`, description enrichie « Superficie (pi ca) : 648 - 760 — 1 c. à c. — 1 sdb »3940**Domaine d'Iberville Apartments — 4 1/2 Pièces De luxe** (1789 $, 4½)41- avant : availability=`Disponible`, area_sqft=None42- après : availability=`Sur la liste d'attente` (statut réel), area_sqft=90043