SPB Git

spb/lou-ka Public

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

HTML 99.7%
4.0 KB · 69 lines markdown
Rendered Raw Blame History
1# logisma — Logisma Gestion Immobilière2- site: https://logisma.ca/appartements-a-louer/3- méthode: html4- annonces: 18 → 185- couverture après (sur 18 annonces): prix 100%, adresse 100%, dispo 94%, superficie 0%, commodités 94%6- fixture: ok · test: ok78## Champs extraits9- Cartes de la page de recherche (comme avant) : type d'unité, ville/secteur10  (filtre Québec/Lévis), adresse, prix.11- Pages détail — désormais via `self.detail()` (cache BD, clé = hash de la12  carte versionné `v3:`, plafond 60 vraies requêtes/sync) :13  - disponibilité (« Disponible le 1er août 2026 ») ;14  - liste « Détails : » extraite STRUCTURELLEMENT (items `<li>` du widget15    Elementor) avec repli sur les puces « • » — corrige 4 annonces qui16    n'avaient AUCUNE commodité (pages sans puces) ; queue « **Les photos… »17    coupée du dernier item ;18  - description : paragraphes de la section « Description » (au lieu du19    og:description fourre-tout) + promotion (« UN MOIS GRATUIT réparti sur20    11 mois. Prix régulier 967$/mois. ») préfixée « Promotion : » ;21  - téléphone du bureau (lien `tel:`) -> `details.contact.phone` — nouveau ;22  - images (uploads WP, bruit filtré), prix de secours si absent de la carte.23- Dérivés par finalize() : pets (« Animaux refusés… »), fumeur, inclusions,24  stationnement, borne de recharge en texte.2526## Champs indisponibles à la source27- SUPERFICIE : jamais publiée (ni carte, ni fiche, ni API) -> `area_sqft = None`28  partout (0 %) — c'est un manque de la source, pas du connecteur.29- lat/lng : aucune carte/coordonnées sur les fiches.30- L'API REST WordPress (/wp-json/wp/v2/location, 19 posts) a été auditée :31  `content` vide et `acf: []` -> rien de plus que le HTML.3233## Fragilités34- 1 annonce (« 3 1/2 – 599, avenue de Norvège #12 ») a un lien de fiche MORT à35  la source : logisma.ca redirige vers la page liste. Garde ajouté (si l'URL36  finale diffère de l'URL demandée, on garde les données de la carte) -> cette37  annonce reste sans dispo/commodités (d'où les 94 %).38- Contenu Elementor très variable d'une fiche à l'autre (avec/sans puces,39  spans de styles inline) : double stratégie `<li>` structurel + repli puces.40- Clé de cache versionnée (`v3:`) : à bumper si l'extraction des fiches change.4142## Améliorations apportées43- Cache BD des fiches (`self.detail`) : ~1 requête/sync en régime stable au44  lieu de 18 fetches systématiques ; budget compté dans `fetch_fn`.45- Commodités : 14/18 -> 17/18 annonces couvertes (extraction `<li>`).46- Description propre (texte réel de la section) + promotions.47- `details.contact.phone` structuré (lien tel:).48- Garde anti-redirection (liens morts).4950## Échantillon avant/après51- Avant : `2 1/2 – 89 Place de Versailles #02, Lévis | 920$ | dispo 2026-08-0152  | amenities [] | details {} | description = og:description fourre-tout`53- Après : `2 1/2 – 89 Place de Versailles #02, Lévis | 920$ | dispo 2026-08-0154  | amenities [Eau chaude INCLUSE!, 1 stationnement extérieur inclus, Borne de55  recharge($), Buanderie($), Non chauffé non éclairé, Animaux refusés (sauf un56  chat), Enquête de crédit] | details {hot_water:true, heating:false,57  electricity:false, laundry, parking ext. inclus, pets:non, contact58  418-652-0377} | description = vraie section Description`5960## Lacunes génériques de normalisation (à traiter dans normalize.py, pas ici)61- « Non-chauffé, non-éclairé » AVEC TRAITS D'UNION : les motifs négatifs62  (`non chauffe`, `non eclaire`) exigent une espace -> non reconnus, et pire,63  le positif `eclaire\b` matche à l'intérieur de « non-eclaire » ->64  `electricity: true` erroné (vu sur « 5 1/2 – 305 rue Laroche #7 »).65- « Animaux refusés (à l'exception d'un chat) » / « (sauf un chat) » est classé66  `pets: "non"` alors que « conditions » (chat accepté) serait plus juste —67  `_PETS_COND_RE` ne couvre pas la tournure « à l'exception de / sauf ».68- « Buanderie dans l'immeuble($) » (payante) donne `laundry: true` sans nuance.69