spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# firma — Groupe Firma2- site: https://groupefirma.ca (API REST /wp-json/wp/v2/housing + fiches /logement/<slug>/)3- méthode: html4- annonces: 12 → 125- couverture après (sur 12 annonces): prix 8%, adresse 100%, dispo 100%, superficie 100%, commodités 100%6- fixture: ok · test: ok78## Champs extraits9- Découverte des 23 immeubles via l'API WordPress (post type `housing`), filtrage Grand Montréal (Lachute exclue), adresse civique du bloc d'en-tête, description de l'immeuble, commodités par icônes actives `bjm-active` (immeuble + unité), unités `li#unit-NNN` (type, badge de disponibilité + date, plan + galerie).10- NOUVEAU — `details.floor` explicite depuis le champ structuré « Étage : N » de la fiche d'unité (8/12 annonces ; ignoré si non numérique).11- NOUVEAU — `area_sqft` explicite depuis « Superficie : N » (pi², structuré). Indispensable car la fiche affiche aussi « Superficie du balcon : N » : le parsing générique (min) aurait retenu le balcon.12- NOUVEAU — « Superficie du balcon : N pi² » ajoutée à la description -> `balcony: true` dérivé.1314## Champs indisponibles à la source15- PRIX : le gabarit met le loyer dans un commentaire HTML `<!-- - 1380$ / mois -->` qui est VIDE (`<!-- - $ / mois -->`) pour 11 unités sur 12 — le site ne publie tout simplement pas les loyers (« Je suis intéressé.e par ce logement » = formulaire). Rien d'autre (pas d'API de réservation exposée, pas de JSON-LD avec prix).16- Animaux : « Chiens acceptés » apparaît dans les commodités mais pas de politique structurée.17- Coordonnées GPS, contact par annonce, inclusions (chauffage/électricité) : absents.1819## Fragilités20- Tout le parsing repose sur les classes `bjm-*` du thème (Boîte à Journaux Média ?) : un re-thème casse le connecteur.21- Le prix dans un commentaire HTML est intrinsèquement fragile (et déjà presque toujours vide).22- La ville est déduite du dernier segment de l'adresse ; adresses sans virgule -> immeuble ignoré (comportement conservateur voulu).23- Dates de disponibilité parfois périmées chez la source (ex. « 01/10/2024 ») -> normalisées en « now ».2425## Améliorations apportées26- Étage structuré (`details.floor`) sur 8/12 annonces.27- Superficie explicite (protège contre la confusion avec la superficie du balcon).28- Superficie du balcon exposée dans la description -> `balcony` dérivé.2930## Échantillon avant/après31- AVANT : `Le Salaberry — 3½ #208 | (sans prix) | Disponible bientôt | 582 pi² | {"ac": true, "elevator": true, "parking": {...}}`32- APRÈS : `Le Salaberry — 3½ #208 | (sans prix) | Disponible bientôt | 582 pi² | {"ac": true, "elevator": true, "balcony": true, "parking": {"available": true, "type": "intérieur et extérieur", "included": false}, "floor": 2}`3334## Lacune générique notée35- « Chiens acceptés » (commodité fréquente ici) n'est pas reconnu par les regex pets de normalize.py (`_PETS_YES_RE` exige « animaux/chats … acceptés ») : `pets` reste None alors que la source l'affirme. À élargir dans normalize.py (`chiens? acceptes`).36