# brochu — Groupe Immobilier Brochu - site: https://groupeimmobilierbrochu.com/projets/ (+ pages projet) - méthode: html (liste + pages détail avec cache BD) - annonces: 7 → 7 (une par projet/immeuble, slugs stables) - couverture après (sur 7 annonces): prix 57% (3 projets sans prix affiché), adresse 100%, dispo 100%, superficie 0% (non publiée), commodités 86% (Le Pilier n'a pas de liste à puces) - fixture: ok · test: ok ## Champs extraits - title, sector, availability (repli), price_label/unit_type (« 1195$ pour 4 1/2 ») : cartes `div.project` de la page liste (thème UIkit) - availability : NOUVEAU — texte de l'encadré « Statut » de la page projet (`div.uk-alert-primary p`, ex. « Disponible dès maintenant ou automne 2026 ») au lieu du label court de la carte - address : NOUVEAU — lien Google Maps du projet (hors pied de page, qui porte l'adresse du bureau) au lieu d'une regex fragile sur le texte global ; gère « 6275 et 6375 boulevard… » - description : NOUVEAU — paragraphes de la colonne principale (`div.uk-width-3-5@m`) incluant la note « * Les chiens ne sont pas permis dans nos propriétés » ; remplace og:description tronquée - amenities : NOUVEAU — liste à puces de la page projet (comptoirs de granit, stationnement intérieur inclus, ascenseurs, air climatisé, interphone, chute à déchets…) → dérive ac, elevator, parking{type, included}, storage, inclusions - details.contact : NOUVEAU — téléphone de l'encadré « Visite sur rendez-vous » + courriel protégé Cloudflare décodé depuis `data-cfemail` (structuré) — chaque projet a son courriel dédié (info@lasentinellelevis.com, info@lepilierlevis.com…) - images : galerie wp-content (inchangé, déplacé dans la page détail cachée) ## Champs indisponibles à la source - Superficies (aucun pi² publié), inventaire unité par unité (une annonce = un immeuble/projet) - Prix pour Le Pilier, La Sentinelle et Promenade des Forts (renvoient à leurs micro-sites) - Politique chats/meublé ; la mention chiens est un texte libre (voir Fragilités) ## Fragilités - Sélecteurs UIkit (`div.project`, `.uk-alert-primary`, `div.uk-width-3-5@m`, `.uk-panel.uk-background-muted`) — dépendants du thème WordPress/UIkit - Le pied de page contient l'adresse du bureau (700, rue des Grands-Jardins) avec le même type de lien Maps : l'extraction exclut explicitement `footer` - Courriels protégés Cloudflare : si la protection change de format, le décodage `data-cfemail` échoue (silencieusement) - Pages détail via `self.detail()` : la clé de cache = sha1 de la carte liste ; un changement fait sur la page projet SANS retouche de la carte liste ne sera pas revu (compromis accepté) - Lacune générique de normalisation : « Les chiens ne sont pas permis dans nos propriétés » n'est reconnue ni par _PETS_NO_RE ni par _PETS_COND_RE → pets reste None alors que la source affirme « conditions » (chiens interdits). Motif suggéré : `chiens? .*(pas|non) (permis|admis|acceptes)` → « conditions » ## Améliorations apportées - Visite des pages projet déplacée derrière le cache BD `self.detail()` (clé = hash de la carte liste) — plus de re-crawl systématique des 7 pages à chaque sync - Disponibilité riche (encadré Statut), adresse fiable via lien Maps, description complète, commodités réelles, contact structuré (téléphone + cfemail décodé) - Correction : l'adresse du bureau du groupe n'est plus prise pour celle du projet (Le Pilier) ## Échantillon avant/après **le-pilier** — avant : `∅ | (type ∅) | Libre novembre 2026 | 2026-11-01 | area=∅ | pets=∅ | {} | 1275 rue J.-B.-Demers Lévis` après : `∅ | (type ∅) | Très récent : novembre 2026 | 2026-11-01 | area=∅ | pets=∅ | {"contact": {"phone": "418-836-7666", "email": "info@lepilierlevis.com"}} | 1275 rue J.-B.-Demers Lévis (QC) G6W 0X9` + description complète **la-sentinelle** — avant : `∅ | 3½ | Disponible dès maintenant ou automne 2026 | now | area=∅ | pets=∅ | {} | 7002, boulevard Guillaume-Couture, Lévis` (amenities=[]) après : `∅ | 3½ | Disponible dès maintenant ou automne 2026 | now | area=∅ | pets=∅ | {"ac": true, "elevator": true, "parking": {"available": true, "type": "intérieur", "included": true}, "contact": {"phone": "418-741-3737", "email": "info@lasentinellelevis.com"}} | 7002, boulevard Guillaume-Couture, Lévis` (10 amenities)