SPB Git

spb/lou-ka Public

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

HTML 99.7%
3.5 KB · 29 lines markdown
Rendered Raw Blame History
1# immeubles_dcl — Les Immeubles DCL2- site: https://www.lesimmeublesdcl.com/logements-a-louer3- méthode: API JSON interne (FleetCart/Laravel) — **pas de rendu JS nécessaire**4- annonces: 9 (Rouyn-Noranda ×2, Val-d'Or ×1, Malartic ×6 — le rapport d'expansion classait ce site « JS-rendu / Playwright » : l'API interne a été rétro-ingéniée à la place)5- couverture (sur 9 annonces): prix 100%, adresse 100% (avec code postal), ville 100%, **GPS 100%**, type 100% (catégorie n ½), disponibilité 89%, animaux 100%, meublé 100%, pièces/chambres/commodités/inclusions 100%, images 100% (galeries 6–13), description 100%6- fixture: ok · test: ok78## Champs extraits9- Le site est un **FleetCart** (catalogue e-commerce Laravel + Vue.js, agence Stylla-web, médias sur S3) : la grille `/logements-a-louer` est vide côté serveur et remplie par `axios.post(route("products.index"))`. Le connecteur reproduit l'appel : GET `/logements-a-louer` (cookie de session Laravel + `csrfToken` lu dans `window.FleetCart`), puis **POST** `/logements-a-louer` (X-CSRF-TOKEN, X-Requested-With) avec `{query, fromPrice, toPrice, perPage:50, page, attribute, sort}` → JSON `products.data` paginé (`last_page`).10- Chaque produit est entièrement structuré : `address`, `city`, `zip`, **`lat_lng`** (GPS réels, validés par `finalize()`), `selling_price` (montant numérique) + `formatted_price` (libellé, espaces fines nettoyées), catégorie « 1 ½ »/« 3 ½ »/« 4 ½ » → `unit_type`, attributs FleetCart : **Disponibilité** (« Janvier 2026 »…) → `availability`, **Animaux**`pets` (aucun → non ; chats/chiens acceptés → conditions), **Ameublement**`furnished`, Pièces/Chambres/Salle de bain/Commodités/Commodités de l'immeuble/Inclusions/**Secteurs**`amenities`/`sector`.11- Fiche détail `/logements-a-louer/<slug>` (via `self.detail` + cache BD, budget 25) : description libre (bloc « Description ») et galerie complète (liens `a.popup-img` vers S3 ; la liste n'expose qu'une image de couverture).12- `external_id` = id numérique du produit FleetCart — stable.1314## Périmètre (exclusions volontaires)15- Les logements **loués** vivent dans un catalogue séparé (page « Logements loués ») : jamais retournés par `products.index` de `/logements-a-louer` — bon signal de fraîcheur.1617## Champs indisponibles à la source18- Superficie : champ `surface_area` toujours 0 (non renseigné par l'agence) — ignoré.19- Prix « spéciaux » (mécanique e-commerce) : non utilisés (`special_price` null partout).2021## Fragilités22- Le POST exige le **jeton CSRF assorti au cookie de session** du GET initial (session `requests` partagée) : si le site ajoute un délai d'expiration agressif, refaire le GET. Au rejeu de fixture, le jeton du HTML capturé rend le POST identique (le corps JSON est déterministe).23- Données saisies à la main par l'agence : coquilles (« Prospecreurs », slug « rue-des-rubis » pour « rue des Prospecteurs »), attribut Animaux parfois contradictoire (« Chats acceptés » + « Non ») — le connecteur tranche prudemment vers `non`.24- Si FleetCart est mis à jour (v4.0.7 aujourd'hui), la forme du payload peut évoluer ; le garde-fou `max_pages=10` borne la pagination.2526## Notes27- Villes réelles observées : Rouyn-Noranda (Monseigneur Rhéaume Est, Perreault Est), Val-d'Or (3e Avenue), Malartic (rue des Prospecteurs — immeuble neuf, volet abordable).28- robots.txt ouvert (`Disallow:` vide) ; politesse 0,6 s (GET et POST) ; 11 requêtes par sync au volume actuel.29