Skip to content
# 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
- 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).