spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# capreit — CAPREIT (capreit.ca)2- site: https://www.capreit.ca/wp-admin/admin-ajax.php?action=property_json&language=fr (+ fiches propriété rendues serveur)3- méthode: json-api + html (fiches propriété derrière le cache BD)4- annonces: 122 → 122 (une par type d'unité disponible ; uid `pid-slug` stables)5- couverture après (sur 122 annonces): prix 100%, adresse 100%, dispo 100%, superficie 92% (10 annonces sans pi² affiché), commodités 100%, GPS 100% (nouveau)6- fixture: ok · test: ok (45 requêtes rejouées)78## Champs extraits9- Flux JSON `property_json` : id, url, title, address, city, province, nearest_intersection, min_rent, price_range, bedroom_range, vacancy_message, has_vacancies + NOUVEAU : latitude/longitude → lat/lng, postal_code → adresse complète (« 2250, rue Guy, Montréal, QC H3H 2M3 »), incentive (« 1 mois de loyer gratuit ») → préfixe « Promotion : … » de la description, earliest_date (AAAAMMJJ) → availability_date structurée des annonces de repli10- Fiche propriété (page HTML) : une ligne par type d'unité (`li.property-options-list-item`) → unit_type, prix « Débutant à X $ », disponibilité (« Immédiatement », « 01 septembre 2026 »), superficie (« Jusqu'à 380 pi ca.* », parsée par finalize) ; commodités (listes à icônes : piscine, sauna, ascenseurs, chauffage inclus, stationnement…) ; description (« Caractéristiques de l'immeuble ») ; galerie photos1112## Champs indisponibles à la source13- Politique d'animaux par propriété (seul un lien générique « Politique relative aux animaux d'assistance » existe)14- Étage, meublé ; superficie exacte (le site affiche « Jusqu'à X pi ca. », donc un maximum, pas la superficie de l'unité offerte)15- Prix exact par unité (fourchette « Débutant à X $ - Y $ » par type)1617## Fragilités18- Le flux retourne les 280 propriétés du Canada : le filtre villes (_QC_CITIES/_GM_CITIES) doit être maintenu quand CAPREIT acquiert de nouveaux immeubles19- Certaines URLs du flux redirigent (301) vers un slug différent (ex. /le-2250-guy/ → /the-2250-guy-apartments/) — suivi par requests, mais un curl sans -L renvoie une page vide20- Sélecteurs `.property-options-*` propres au thème WordPress CAPREIT21- La collecte des commodités (li + div.icon) attrape aussi les lignes d'unités (« 1 1/2 », « Jusqu'à 380 pi ca.* ») — bruit toléré, filtré par la longueur < 6022- Superficie « Jusqu'à X pi ca. » : c'est un maximum de la gamme, stocké tel quel dans la description (finalize en dérive area_sqft) — sémantique « à partir de » inversée, impossible à distinguer à la source2324## Améliorations apportées25- GPS (lat/lng) sur 100 % des annonces depuis le flux (avant : aucune coordonnée)26- Adresse complète avec ville + code postal (avant : rue seule)27- Promotions du flux (« 1 mois de loyer gratuit », « Emménagement anticipé ») visibles en tête de description28- availability_date structurée (earliest_date du flux) pour les annonces de repli sans tableau d'unités29- Fiches propriété derrière `self.detail()` : clé = hash de la ligne du flux (min_rent, earliest_date, vacancy_message, price_range, has_vacancies, units_count, incentive) → sync passe de ~75 s à ~0,4 s quand rien n'a changé ; ~44 pages revisitées seulement quand le flux bouge3031## Échantillon avant/après32**Faubourg de la Pointe et Domaine Laudance — 1 1/2** — avant :33`930.0 | 1½ | Immédiatement | now | 370.0 | pets=∅ | {"inclusions": {"heating": true}, "elevator": true, ...} | 900, 920 Laudance, 3780, … des Compagnons` (lat/lng ∅)34après :35`930.0 | 1½ | Immédiatement | now | 370.0 | pets=∅ | {mêmes détails} | 900, 920 Laudance, …, des Compagnons, Ville De Québec, QC G1X 4V6` + lat=46.760387, lng=-71.3321923637**Faubourg de la Pointe et Domaine Laudance — 3 1/2** — avant :38`1150.0 | 3½ | 01 septembre 2026 | 2026-09-01 | 690.0 | … | rue seule, pas de GPS`39après :40`1150.0 | 3½ | 01 septembre 2026 | 2026-09-01 | 690.0 | … | adresse + G1X 4V6, lat/lng remplis`41