SPB Git

spb/lou-ka Public

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

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