SPB Git

spb/lou-ka Public

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

HTML 99.7%
2.8 KB

# sentinelle — La Sentinelle (Groupe Brochu, Lévis)

  • site: https://lasentinellelevis.com/projet/
  • méthode: html
  • annonces: 10 → 10
  • couverture après (sur 10 annonces): prix 100%, adresse 100%, dispo 100%, superficie 100%, commodités 100%
  • fixture: ok · test: ok

# Champs extraits

  • NOUVEAU — tableau structuré de /projet/ (tr[data-url*='/unite-']) : numéro d'unité, étage, superficie (pi²), type (« 4½+ »), prix (« 1695$ »), statut (Disponible/Loué/Réservé). Le statut filtre AVANT toute requête : les fiches des unités louées ne sont plus téléchargées.
  • Champs désormais structurés à la source : price + price_label (colonne prix), area_sqft (colonne superficie), details.floor (colonne étage), unit_type (colonne type ; « + » → « Avec espace bureau » en description).
  • Fiche d'unité (via self.detail(...), clé = ligne du tableau) : « Disponible à partir de : … » (availability datée), commodités depuis la vraie liste à puces ul.uk-list-disc (au lieu d'une liste de candidats codée en dur), photos/plans wp-content.
  • details.contact.phone (lien tel: du pied de page — bureau de location de l'immeuble), code postal G6V 0C1 ajouté à l'adresse.

# Champs indisponibles à la source

  • Animaux, meublé, lat/lng (rien de publié).
  • Courriel (obfusqué par Cloudflare : « [email protected] »).
  • Inclusions chauffage/électricité (seule « Eau chaude fournie » est affichée).

# Fragilités

  • Le tableau contient une colonne commentée (<!-- <td>1</td> -->) : les cellules sont reconnues par motif (statut/prix/étage/type/pi²), pas par position — robuste à une réactivation de colonne.
  • Repli conservé : si le tableau disparaît, balayage des liens /projet/etage-N/unite-NNN/ comme avant (avec les mêmes extractions fiche).
  • « Ascenceur » (coquille de la source) n'est pas reconnu par le normaliseur d'ascenseur — voir lacunes génériques.

# Améliorations apportées

  • Parsing du tableau structuré (prix/superficie/étage/type/statut explicites, plus dérivés du texte).
  • Fiches derrière self.detail(...) (cache BD) + plafond max_details=60 (_BudgetReached) ; unités non disponibles filtrées sans requête.
  • Commodités extraites structurellement (ul.uk-list-disc) — n'importe quelle nouvelle commodité de la source sera reprise.
  • details.floor, details.contact.phone, code postal.
  • Fixture (11 requêtes) + tests ok.

# Échantillon avant/après

  • AVANT : Unité 104 (4½) | 1695 | dispo "Disponible à partir de : Maintenant" | area 1241 (regex texte) | details={hot_water, ac, storage, parking}
  • APRÈS : Unité 104 (4½) | 1695 (structuré) | idem | area 1241 (structuré) | details={hot_water, ac, storage, parking:{intérieur, inclus}, floor:1, contact.phone:418-741-3737}