SPB Git

spb/lou-ka Public

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

HTML 99.7%
3.6 KB

# sibelanger — Société immobilière Bélanger

  • site: https://sibelanger.com/appartements-a-louer/ (+ pages détail /appartements-a-louer//)
  • méthode: html
  • annonces: 13 → 12 (1 annonce périmée retirée par le diff)
  • couverture après (sur 12 annonces): prix 100%, adresse 100%, dispo 100%, superficie 75%, commodités 100%
  • fixture: ok · test: ok

# Champs extraits

  • Cartes liste : titre, secteur, prix, disponibilité (« Libre en septembre »), type (« 3 ½ », « Maison de ville »), icônes de caractéristiques (attributs title : Non meublé, Entrée laveuse-sécheuse, Balcon, Chauffé…), data-unit-id (external_id stable), carrousel de photos.
  • Pages détail (nouveau) : adresse civique complète avec code postal (« 1175, rue de Chamonix, Québec (QC) G1H 6M3 »), superficie depuis « Plan de l'unité … pi2 » (texte brut → parse par finalize), description riche (contenu WP complet au lieu du og:description), commodités de l'appartement + commodités de l'immeuble (Service de maintenance 24/7, Stationnement extérieur/intérieur…), disponibilité de repli, galerie complète.
  • Dérivés par finalize() : smoking (« Environnement sans fumée »), parking (« 1 stationnement inclus »), contact (téléphone de l'agente dans la description), furnished (« Non meublé »), price_from.

# Champs indisponibles à la source

  • lat/lng : aucune coordonnée dans le HTML.
  • Animaux : politique jamais mentionnée (ni carte, ni fiche).
  • Superficie absente sur 3 fiches (pas de plan d'unité publié).

# Fragilités

  • L'adresse affichée sur la fiche « Wilfrid-Pelletier - Unité 401 » est « 3060, Rue Antoine-Du Verdier » (même immeuble/complexe ou coquille du site) : on reprend fidèlement ce que la source publie.
  • « Entrée lave-vaisselle » (une entrée, pas l'appareil) est classée appliances.dishwasher: true par la normalisation générique — voir lacune ci-dessous.
  • Cache détail calé sur titre|prix|dispo de la carte : une modification de description seule ne re-déclenche pas le téléchargement de la fiche.

# Améliorations apportées

  • Pages détail désormais visitées via self.detail() (cache BD) avec plafond de vraies requêtes (max_details=60) — avant : og:description + images à CHAQUE sync.
  • Adresse : slug deviné (« 350, Chemin Ste-Foy ») → adresse civique complète publiée sur la fiche (avec code postal). Reste en repli si la fiche est indisponible.
  • Superficie 0 % → 75 % (span .single-unit__plan-surface).
  • Commodités enrichies (appartement + immeuble) ; « Services de proximité » (épicerie, parc…) volontairement exclus pour ne pas polluer.
  • Description complète nettoyée des invites « Demander une visite ».

# Échantillon avant/après

  • Chamonix - Unité 197 — avant : adresse « 1175, Chamonix » (slug), pas de superficie, description = og:description ; après : « 1175, rue de Chamonix, Québec (QC) G1H 6M3 », 1360 pi², description complète, + smoking false, parking inclus, contact 581-702-2720.
  • Samuel de Champlain - 304 — avant : superficie NULL ; après : 938 pi², commodités immeuble ajoutées.
  • Wilfrid-Pelletier - Unité 401 — avant : adresse « 962, Wilfrid Pelletier » (dérivée du slug) ; après : adresse publiée par la source (3060, Rue Antoine-Du Verdier, G1W 4X9).

# Lacune générique de normalisation (à traiter dans normalize.py, non contournée ici)

  • « Entrée lave-vaisselle » / « sortie lave-vaisselle » devrait donner dishwasher_hookup (comme washer_dryer_hookup) et non dishwasher: true — la règle dishwasher: (r"lave[- ]vaisselle|dishwasher") matche l'entrée seule.