spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# gestipro — Gestipro2- site: https://gestipro.info/a-louer/3- méthode: html4- annonces: 96 → 965- couverture après (sur 96 annonces): prix 100%, adresse 100%, dispo 100%, superficie 23%, commodités 99%6- fixture: ok · test: ok78## Champs extraits9- Carte liste (Houzez) : titre, adresse + secteur (Nominatim), prix (`item-price`, virgule = milliers), statuts de disponibilité (`label-status`), type d'unité (`h-type`), vignette.10- Fiche détail (nouveau, via `self.detail` + cache BD) :11 - description complète `#property-description-wrap` (1200 c., avant : og:description 600 c.) ;12 - bloc « Détails » structuré (paires `strong`/`span`) : **Dimensions de la propriété** (pi², structuré → `area_sqft`), **Animaux toléré** (→ `pets` oui/non/conditions, ex. « Chat seulement » → conditions), **Frais et charge** (ajouté aux `amenities`, ex. « Chauffage, eau chaude et électricité inclus »), **Disponibilité** (texte complet) ;13 - géolocalisation **lat/lng** depuis le JSON-LD schema.org `Place.geo` (96/96) ;14 - caractéristiques `#property-features-wrap` + galerie complète.1516## Champs indisponibles à la source17- Superficie : seuls ~23 % des fiches exposent « Dimensions de la propriété ».18- Meublé : jamais mentionné.19- Chambres/salles de bain exposées sur la carte et la fiche mais sans clé canonique `details` correspondante (non retenu).20- « Année de construction », « Enquête de crédit » : sans équivalent schéma.2122## Fragilités23- Thème Houzez WordPress : sélecteurs `.item-listing-wrap[data-hz-id]`, `#property-detail-wrap .list-lined-item` — un changement de thème casserait le parsing.24- Le JSON-LD `Place` annonce `priceCurrency: USD` (coquille du site) — on n'utilise que `geo`.25- Adresse Nominatim verbeuse (« …, Québec, QC, Canada, Charlesbourg, Québec ») : le découpage par virgules reste heuristique.2627## Améliorations apportées28- Pages détail désormais servies par le **cache BD** (`self.detail`, clé = hash de la carte liste) + budget de 150 vraies requêtes (compteur dans `_fetch_detail`, levée d'exception au-delà → pas de cache pollué).29- Extraction du bloc « Détails » : superficie structurée (5 → 22 annonces avec `area_sqft`), animaux (`pets` sur 88/96), frais et charge (inclusions dérivées par finalize), disponibilité complète.30- Description complète (au lieu du meta og tronqué), lat/lng (0 → 96/96).3132## Échantillon avant/après33- Avant : « 7170 boul. Cloutier – Le Maria-Goretti » — 2427 $, 5½, dispo « 1er juillet 2027, Dans les mois à venir », area NULL, pets NULL, pas de lat/lng, inclusions {hot_water, internet}.34- Après : même annonce — pets=conditions (« Chat seulement »), lat/lng 46.8518/-71.2747, description complète (ESPACE DE VIE / FRAIS ET CHARGE / IMMEUBLES), amenities + « Frais et charge : Eau chaude et wifi inclus ».35- Après : « 1490-1500 Maire-Beaulieu – Bourg de Coulonge » (studio) — area_sqft 456 (structuré), pets=conditions, inclusions {heating, electricity, hot_water}.3637## Lacunes génériques de normalisation observées38- « Chauffage et électricité **à la charge des locataires** » n'est pas reconnu comme négatif → `heating/electricity: true` à tort quand la description le mentionne.39- « **Actuellement vacant** » n'est pas reconnu par `parse_availability_date` → `availability_date` NULL alors que le logement est libre.40