Skip to content
# 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
- 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.