SPB Git

spb/lou-ka Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

HTML 99.7%
3.0 KB

# firma — Groupe Firma

  • site: https://groupefirma.ca (API REST /wp-json/wp/v2/housing + fiches /logement//)
  • méthode: html
  • annonces: 12 → 12
  • couverture après (sur 12 annonces): prix 8%, adresse 100%, dispo 100%, superficie 100%, commodités 100%
  • fixture: ok · test: ok

# Champs extraits

  • 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).
  • NOUVEAU — details.floor explicite depuis le champ structuré « Étage : N » de la fiche d'unité (8/12 annonces ; ignoré si non numérique).
  • 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.
  • NOUVEAU — « Superficie du balcon : N pi² » ajoutée à la description -> balcony: true dérivé.

# Champs indisponibles à la source

  • 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).
  • Animaux : « Chiens acceptés » apparaît dans les commodités mais pas de politique structurée.
  • Coordonnées GPS, contact par annonce, inclusions (chauffage/électricité) : absents.

# Fragilités

  • Tout le parsing repose sur les classes bjm-* du thème (Boîte à Journaux Média ?) : un re-thème casse le connecteur.
  • Le prix dans un commentaire HTML est intrinsèquement fragile (et déjà presque toujours vide).
  • La ville est déduite du dernier segment de l'adresse ; adresses sans virgule -> immeuble ignoré (comportement conservateur voulu).
  • Dates de disponibilité parfois périmées chez la source (ex. « 01/10/2024 ») -> normalisées en « now ».

# Améliorations apportées

  • Étage structuré (details.floor) sur 8/12 annonces.
  • Superficie explicite (protège contre la confusion avec la superficie du balcon).
  • Superficie du balcon exposée dans la description -> balcony dérivé.

# Échantillon avant/après

  • AVANT : Le Salaberry — 3½ #208 | (sans prix) | Disponible bientôt | 582 pi² | {"ac": true, "elevator": true, "parking": {...}}
  • 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}

# Lacune générique notée

  • « 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).