SPB Git

spb/lou-ka Public

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

HTML 99.7%
3.2 KB

# oklouer — OK Louer (appartements meublés temporaires, Québec)

  • site: https://www.oklouer.com/logements/ (haute-ville, centre-ville, limoilou, charlesbourg-beauport) + fiches d'unités
  • méthode: html
  • annonces: 41 → 41
  • couverture après (sur 41 annonces): prix 100%, adresse 100%, dispo 0%, superficie 0%, commodités 100%
  • fixture: ok · test: ok

# Champs extraits

  • Adresse : h3.unit-address de la fiche (repli : h3 de la carte de secteur) — plus robuste que l'ancienne regex sur le texte brut.
  • Prix : div.price de la fiche ("À partir de 75$/jour ou 1100$/mois") — prix mensuel extrait, price_label original conservé.
  • Type d'unité : li.nb-pieces du ul.icon-list (repli : slug de l'URL).
  • lat/lng (nouveau) : attributs data-lat/data-lng des cartes div.unit des pages de secteurs — 41/41 géolocalisées.
  • Commodités (nouveau) : icônes structurées ul.icon-list — nombre de lits (ico-bed), chambres (ico-bedroom), salles de bain (ico-bathroom), "Animaux permis" (ico-paws, tooltip), "Avec air climatisé sur demande" (ico-clim, tooltip) + "Meublé". → pets="oui" dérivé sur 23/41, ac dérivé, furnished=true.
  • Images : galerie /uploads/m/ (inchangé).

# Champs indisponibles à la source

  • Disponibilité : jamais affichée (locations temporaires, disponibilité au téléphone).
  • Superficie : jamais affichée.
  • Description d'unité : la fiche ne contient qu'un texte boilerplate sur le quartier (identique pour toutes les unités du secteur) — non repris pour éviter de polluer les annonces.

# Fragilités

  • Le prix mensuel dépend du motif "…$/mois" dans div.price ; si le site n'affichait qu'un prix/jour (<100 $), price resterait None (comportement voulu, pas d'invention).
  • Les tooltips title des icônes sont en français et pourraient changer de libellé.
  • 41 fiches visitées à chaque sync (~28 s) — nécessaire car le prix n'apparaît que sur la fiche ; pas de signal de changement exploitable sur les cartes pour un cache self.detail.

# Améliorations apportées

  • Découverte par cartes structurées div.logements div.unit (au lieu d'une regex sur tous les hrefs) : adresse, lat/lng, icônes récupérés dès la liste.
  • Ajout lat/lng (100%), commodités par icônes (lits/chambres/sdb/animaux/clim), pets dérivé "oui" quand ico-paws présent.
  • price_label nettoyé (astérisque retiré, extrait de div.price plutôt que du texte complet de la page).
  • Adresse extraite de h3.unit-address (fini la regex fragile avec préfixe "2 1/2 dans Limoilou").

# Échantillon avant/après

  • Avant : 2½ — 305 Rue Caron… | 1350 | 2½ | dispo="" | area=None | pets=None | details={"furnished": true, "price_from": true} | amenities=["Meublé"] | lat=None
  • Après : 2½ — 305 Rue Caron… | 1350 | 2½ | dispo="" | area=None | details={"ac": true, "furnished": true, "price_from": true} | amenities=["1 lit","1 salle de bain","Avec air climatisé sur demande","Meublé"] | lat=46.8142, lng=-71.2294 ; unités avec ico-paws → pets="oui" (23/41).

# Note de normalisation (générique)

  • "Avec air climatisé sur demande" met ac=true via la règle climatis_NEUTRAL_RE ne neutralise "sur demande" que pour les électroménagers, pas pour la climatisation.