SPB Git

spb/lou-ka Public

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

HTML 99.7%
3.4 KB

# immomarketing — IMMOMARKETING / Immoappart

  • site: https://immoappart.ca (11 pages de secteurs Québec + Grand Montréal → fiches /appartement//)
  • méthode: html
  • annonces: 82 → 82
  • couverture après (sur 82 annonces): prix 100%, adresse 99%, dispo 98%, superficie 0%, commodités 99%
  • fixture: ok · test: ok

# Champs extraits

  • lat/lng : 100% (attributs data-lat/data-lng de la carte interactive de chaque fiche — structurés)
  • description complète : conteneur .the-content (promotions, inclusions de loisirs, « Informations supplémentaires ») au lieu du og:description tronqué → finalize() dérive maintenant pets (« Animaux non acceptés » → non, 53/82), smoking (Non-fumeur), contact{phone,email}, parking, ac, pool, gym…
  • amenities : liste « Inclusions » dédiée de la fiche (dropdown) au lieu de toutes les puces de main (moins de bruit marketing)
  • spécifications structurées « Caractéristiques de l'immeuble » : Prix (repli de price_label), Pièces (repli de unit_type), Chambre/Salle de bain (ajoutées à la description)
  • adresse : h2 « numéro + rue » sans virgule finale maintenant accepté (ex. « 570, Charest est » de JB Laliberté)
  • title, unit_type, price/price_label (bandeau), availability (« Date de disponibilité »), images — inchangés

# Champs indisponibles à la source

  • superficie : jamais affichée (aucun champ « Superficie » sur les fiches, vérifié sur Québec/Montréal/Laval)
  • 1 fiche sans adresse civique (Le Président I & II, Montréal), 2 fiches avec « Date de disponibilité » vide (Le Loumii)
  • « Date de déménagement » du dropdown : signification ambiguë (souvent passée) — non utilisée
  • pas de custom post type dans /wp-json/ (types WP standards seulement)

# Fragilités

  • 82 fiches à visiter, MAIS le connecteur passe maintenant par self.detail() : clé = hash du texte de la carte liste (adresse+prix+type+badge) → seules les fiches nouvelles/modifiées sont re-téléchargées (budget max_details=120 vraies requêtes, comptées dans fetch_fn)
  • Si un changement de la fiche n'affecte pas la carte liste (ex. description seulement), il n'est vu qu'au prochain changement de carte
  • LACUNE GÉNÉRIQUE (normalize.py) : le crédit promotionnel « Crédit de 1 000 $ Éclaire » matche la règle electricity (eclaire\b) → inclusions.electricity=true à tort sur les fiches Cité M ; de même « 2 espaces pour seulement 150 $ » donne parking.price=50 (le motif (\d+)\s*\$ coupe le nombre après la fenêtre de 40 caractères)

# Améliorations apportées

  • Cache BD des fiches détail (self.detail) — ~93 requêtes seulement au premier sync, quasi 0 ensuite
  • GPS structuré sur 100% des annonces (nouveau)
  • pets/smoking/contact/parking dérivés grâce à la description complète (avant : og:description tronqué, pets=None partout)
  • amenities propres (liste « Inclusions » officielle) + specs chambres/salles de bain dans la description
  • correction d'adresse pour les h2 sans virgule finale

# Échantillon avant/après

  • CITÉ M 4½ AVANT : desc=og(600c), amenities=15 puces mélangées, pets=None, lat=None, details={ac,pool,gym,storage,parking{intérieur}}
  • CITÉ M 4½ APRÈS : desc=.the-content(1718c)+2 chambre(s), 2 salle(s) de bain., amenities=10 « Inclusions », pets=non, smoking=false, contact{418-575-6158, citem@immomarketing.ca}, parking{intérieur, included:false}, lat/lng=46.83891/-71.312
  • JB Laliberté AVANT : address=`` · APRÈS : 570, Charest est