Skip to content
# lynk_olymbec — Lynk par Olymbec (Lynk De la Savane)
- site: https://www.lynk.ca/lynk-dls/units (+ /floorplans, /floorplans/, /lynk-dls)
- méthode: firecrawl (repli — accès direct avec en-têtes navigateur quand Cloudflare laisse passer)
- annonces: 4 → 4
- couverture après (sur 4 annonces): prix 100%, adresse 100%, dispo 75%, superficie 75%, commodités 100%
- fixture: ok · test: ok
- /lynk-dls/units : prix marketing « à partir de » par type (repli), icônes
« dans mon unité » (chauffage — thermostat individuel, électricité, eau
chaude, climatisation, internet fibre 1,5G, laveuse-sécheuse/lave-vaisselle/
réfrigérateur/micro-ondes Whirlpool, four et cuisinière, luminaires et
stores) et liste « aménagements et matériaux » (acoustique, quartz…) —
SCRAPÉES au lieu de la liste codée en dur — photos RentCafe.
- /lynk-dls/floorplans (RentCafe) — NOUVEAU : attributs STRUCTURÉS
data-floorplan-size/sqft/price par plan -> area_sqft (min de la
fourchette + « Superficie : 657 à 829 pi² » en commodité) et PRIX RÉELS
(« de 1 650 $ à 2 293 $ par mois » — le marketing affichait 1 700 $ pour le
3½, RentCafe publie 1 650 $).
- Pages de plan (via
self.detail, clé = attributs du plan, plafond 10
vraies requêtes/sync) — NOUVEAU : unités disponibles (« # 923 — Disponible
maintenant ») -> disponibilité RÉELLE par type + liste des numéros d'unités
dans la description.
- /lynk-dls : description du projet, « services et commodités » de l'immeuble
(piscine extérieure chauffée, salle de fitness, concierge, salon vip*,
stationnement intérieur*, chargeurs VE*…) scrapées, téléphone (lien
tel:)
-> details.contact.phone (514-737-5965).
- Correspondance plans -> types : Studio→Studio, 1 ch.→3½, 2 ch.→4½, 3 ch.→5½
(les deux plans 3 chambres agrégés sous 5½).
# Champs indisponibles à la source
- Studio : aucune unité disponible côté RentCafe (bouton « contactez-nous »
seulement) -> dispo vide et superficie absente pour ce type (d'où 75 %) ;
seul le prix marketing 1 380 $ existe.
- lat/lng : aucune coordonnée dans les pages.
- Animaux, meublé : non publiés.
# Fragilités
- Cloudflare : l'accès direct passe par intermittence ; sinon Firecrawl
(FIRECRAWL_API_KEY requis). ~4-6 requêtes rendues par sync (pages plan
amorties par le cache
self.detail).
- ATTENTION : Firecrawl réécrit les href en ABSOLU alors que l'accès direct
les laisse RELATIFS ->
urljoin systématique (c'était la cause d'un échec
silencieux de l'extraction des unités).
- Chaque plan apparaît 2x dans le HTML (desktop+mobile) : déduplication par
slug pour ne pas doubler les unités.
- Granularité conservée : 1 annonce par TYPE (ids
dls-studio, dls-3.5…),
pas par unité — schéma d'external_id inchangé.
# Améliorations apportées
- SUPPRESSION des valeurs semi-inventées :
availability="Disponible" codé en
dur remplacé par la dispo réelle RentCafe (« Disponible maintenant » ou vide
si inconnue) ; liste AMENITIES codée en dur remplacée par le scraping des
3 sections réelles du site.
- Prix réels par fourchette RentCafe (structurés), superficie structurée,
unités disponibles nominatives, contact téléphonique, description réelle.
# Échantillon avant/après
- Avant :
Lynk De la Savane — 3½ | 1700$ « à partir de 1700 $ » (marketing) | dispo « Disponible » (codée en dur) | superficie None | 12 commodités codées en dur
- Après :
Lynk De la Savane — 3½ | 1650$ « de 1 650 $ à 2 293 $ par mois » (RentCafe) | dispo « Disponible maintenant » (réelle) | 657 pi² (attribut structuré, fourchette 657-829 en commodité) | ~30 commodités scrapées (unité + immeuble) | description + « 7 unité(s) disponible(s) : #923, … » | contact 514-737-5965
# Lacunes génériques de normalisation (à traiter dans normalize.py, pas ici)
- Les items marqués « * » (« salon vip* », « stationnement intérieur* » =
frais additionnels) sont dérivés sans nuance payant/inclus.
price_label en fourchette « de X $ à Y $ » n'active pas price_from
(le prix affiché est bien le plancher) — price_is_from ne reconnaît que
« à partir de / from / + ».