# headway — La Corporation Headway - site: https://www.headwayltee.com (4 pages : /logements-a-louer/appartement-quebec, /ste-foy, /logements-a-louer/appartement-charlesbourg, /logements-a-louer/levis) - méthode: html - annonces: 7 → 7 - couverture après (sur 7 annonces): prix 0%, adresse 100%, dispo 100%, superficie 0%, commodités 100% - fixture: ok · test: ok ## Champs extraits - title, address (bureau de location du complexe), sector, city - amenities par complexe (« Services disponibles » de chaque section, plus de bloc partagé) - description : paragraphe du complexe + « Composition de l'immeuble : … » + « À moins de 5 minutes à pied : … » (commerces à proximité) - details.contact.phone : téléphone du bureau de location de CHAQUE complexe (champ libellé « Numéro de téléphone : » sur la page) - unit_type quand la composition ne compte qu'un seul type ; images (wixstatic pleine résolution, filtrées par alt) - inclusions/parking/pool/laundry/storage/elevator dérivés par finalize() depuis les amenities ## Champs indisponibles à la source - prix : jamais affiché (location par téléphone uniquement) - disponibilité réelle : aucune liste d'unités disponibles (texte générique « Sur demande ») - superficie, pets, meublé, lat/lng : absents du site - une annonce = un complexe immobilier, pas une unité (site vitrine Wix sans inventaire) ## Fragilités - Parsing positionnel de segments de texte Wix (`>texte<`) : un re-design du site casserait l'extraction ; le test de fixture le détectera - L'association section→complexe repose sur l'ordre des titres dans la page (dernière occurrence exacte du nom) - Curé-Pelletier partage l'adresse et le téléphone du bureau de Thibault (c'est ce que la source affiche) ## Améliorations apportées - Filtre des segments CSS/JS inlinés par Wix (`{`/`}`) : la description de Place Prévert était du JavaScript brut, et un sélecteur CSS `#comp-… {fill:…}` polluait les amenities - Amenities par complexe (bornées à la section du complexe) au lieu du premier bloc de la page ; Thibault et Curé-Pelletier passaient de 0 amenity (le break `À moins de` matchait une phrase d'intro) à 7 - Complexe Renaissance : récupère l'item « l'inclusion du chauffage, de l'électricité et de l'eau chaude » (avant tronqué par la limite de 60 caractères) et ne capte plus le titre « Accès facile » comme amenity - Nouveau : details.contact.phone par complexe (structuré à la source, libellé dédié) - Nouveau : liste des commerces « À moins de 5 minutes à pied » ajoutée à la description - Description bornée à la section du complexe (ne déborde plus sur le complexe suivant) ## Échantillon avant/après - Place Prévert AVANT : description=`if (typeof Promise === 'undefined' || …` (JS), amenities avec `#comp-ljwpi06b svg [data-color="1"] {fill: #525661;}`, details sans contact - Place Prévert APRÈS : description=`Composition de l'immeuble : 1½, 2½, 3½, 4½. À moins de 5 minutes à pied : Arrêts d'autobus, Banque/caisse, École primaire…`, 9 amenities propres, details.contact.phone=418-527-9873 - Thibault AVANT : amenities=[] · APRÈS : 7 amenities (« Chauffé, éclairé et eau chaude fournie », …), inclusions{heating,electricity,hot_water}=true, phone 418-833-4333