spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# immomarketing — IMMOMARKETING / Immoappart2- site: https://immoappart.ca (11 pages de secteurs Québec + Grand Montréal → fiches /appartement/<slug>/)3- méthode: html4- annonces: 82 → 825- couverture après (sur 82 annonces): prix 100%, adresse 99%, dispo 98%, superficie 0%, commodités 99%6- fixture: ok · test: ok78## Champs extraits9- lat/lng : 100% (attributs `data-lat`/`data-lng` de la carte interactive de chaque fiche — structurés)10- description complète : conteneur `.the-content` (promotions, inclusions de loisirs, « Informations supplémentaires ») au lieu du og:description tronqué → finalize() dérive maintenant pets (« Animaux non acceptés » → non, 53/82), smoking (Non-fumeur), contact{phone,email}, parking, ac, pool, gym…11- amenities : liste « Inclusions » dédiée de la fiche (dropdown) au lieu de toutes les puces de `main` (moins de bruit marketing)12- spécifications structurées « Caractéristiques de l'immeuble » : Prix (repli de price_label), Pièces (repli de unit_type), Chambre/Salle de bain (ajoutées à la description)13- adresse : h2 « numéro + rue » sans virgule finale maintenant accepté (ex. « 570, Charest est » de JB Laliberté)14- title, unit_type, price/price_label (bandeau), availability (« Date de disponibilité »), images — inchangés1516## Champs indisponibles à la source17- superficie : jamais affichée (aucun champ « Superficie » sur les fiches, vérifié sur Québec/Montréal/Laval)18- 1 fiche sans adresse civique (Le Président I & II, Montréal), 2 fiches avec « Date de disponibilité » vide (Le Loumii)19- « Date de déménagement » du dropdown : signification ambiguë (souvent passée) — non utilisée20- pas de custom post type dans /wp-json/ (types WP standards seulement)2122## Fragilités23- 82 fiches à visiter, MAIS le connecteur passe maintenant par self.detail() : clé = hash du texte de la carte liste (adresse+prix+type+badge) → seules les fiches nouvelles/modifiées sont re-téléchargées (budget max_details=120 vraies requêtes, comptées dans fetch_fn)24- Si un changement de la fiche n'affecte pas la carte liste (ex. description seulement), il n'est vu qu'au prochain changement de carte25- LACUNE GÉNÉRIQUE (normalize.py) : le crédit promotionnel « Crédit de 1 000 $ Éclaire » matche la règle electricity (`eclaire\b`) → inclusions.electricity=true à tort sur les fiches Cité M ; de même « 2 espaces pour seulement 150 $ » donne parking.price=50 (le motif `(\d+)\s*\$` coupe le nombre après la fenêtre de 40 caractères)2627## Améliorations apportées28- Cache BD des fiches détail (self.detail) — ~93 requêtes seulement au premier sync, quasi 0 ensuite29- GPS structuré sur 100% des annonces (nouveau)30- pets/smoking/contact/parking dérivés grâce à la description complète (avant : og:description tronqué, pets=None partout)31- amenities propres (liste « Inclusions » officielle) + specs chambres/salles de bain dans la description32- correction d'adresse pour les h2 sans virgule finale3334## Échantillon avant/après35- CITÉ M 4½ AVANT : desc=og(600c), amenities=15 puces mélangées, pets=None, lat=None, details={ac,pool,gym,storage,parking{intérieur}}36- CITÉ M 4½ APRÈS : desc=`.the-content`(1718c)+`2 chambre(s), 2 salle(s) de bain.`, amenities=10 « Inclusions », pets=`non`, smoking=false, contact{418-575-6158, citem@immomarketing.ca}, parking{intérieur, included:false}, lat/lng=46.83891/-71.31237- JB Laliberté AVANT : address=`` · APRÈS : `570, Charest est`38