SPB Git

spb/lou-ka Public

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

HTML 99.7%
3.2 KB

# forsa — Gestion immobilière Forsa

  • site: https://www.gestionforsa.com (Squarespace)
  • méthode: html plat — sections « liste » de /logements-disponibles (1 requête/sync) + fiches détail par unité (cache BD, budget 20)
  • annonces: 12 (le chalet à la journée de St-Adolphe-d'Howard est exclu : location saisonnière 85-100 $/jour, pas un bail résidentiel)
  • couverture (sur 12 annonces): prix 100%, adresse 100%, dispo 100%, type 100%, ville 100%, images 100%, description 100% — superficie/GPS jamais publiés
  • fixture: ok (13 requêtes : liste + 12 détails) · test: ok (2 verts)

# Champs extraits

  • Page /logements-disponibles : 3 sections Squarespace « liste » (2½-3½ / 4½-5½ / maisons de ville & chalet), cartes li.list-item :
    • titre list-item-content__title « 2 1/2, Joliette - MAINTENANT » → unit_type (préfixe, via normalize_unit_type), ville (2e segment) et availability (après le tiret ou la 2e virgule, texte source : « MAINTENANT », « Septembre », « 1er DÉCEMBRE ») ;
    • description de la carte : 1er paragraphe = adresse civique (« 222, rue Lajoie Sud, app. 12 »), paragraphe avec $ = price_label brut (« 1 290 $ par mois (2 stationnements) ») ; l'espace de milliers est retiré avant parse_price ;
    • bouton « Détails » → page par unité ; le slug d'URL (ex. 222-12lajoiesud) sert d'external_id stable.
  • Villes réelles tirées du titre de chaque carte, abréviations développées (St-Gabriel → Saint-Gabriel, St-Charles-Borromée → Saint-Charles-Borromée) ; une unité est à Montréal (2580A Sherbrooke Est) — conservée telle quelle.
  • Fiche détail (cache BD, self.detail) : bloc HTML le plus long = description riche (ENVIRONNEMENT / LOGEMENT / IMMEUBLE, Inclusions, Exclusions — textmine structure au finalize()) + galerie complète (img squarespace-cdn, max 30, paramètre ?format= retiré).
  • robots.txt : le groupe User-agent: * autorise les pages HTML mais interdit /api/ et les vues JSON → aucun appel à l'API Squarespace, HTML seulement.

# Champs indisponibles à la source

  • Superficie, GPS, animaux/meublé structurés : jamais publiés (les inclusions restent dans la description, structurées par textmine).
  • Pas de pagination : tout le parc annoncé tient sur une page.

# Fragilités

  • external_id = slug de page créé à la main par l'agence : une annonce republiée sous un autre slug devient une nouvelle annonce (acceptable, le slug est stable pendant la vie de l'annonce).
  • Format du titre non strictement uniforme (« - » vs « , » avant la dispo) : le parseur accepte les deux, mais un format inédit laisserait availability vide.
  • Le prix vit dans un paragraphe libre de la carte : si l'agence déplace le $ dans un autre paragraphe, l'adresse et le prix pourraient être intervertis (le 1er § sans $ = adresse).

# Échantillon

  • 222-12lajoiesud : 2½, Joliette, 595 $/mois (eau chaude incluse), MAINTENANT, 222 rue Lajoie Sud app. 12, 10 photos.
  • 165-8maskinonge : 4½, Saint-Gabriel, 1 290 $/mois (2 stationnements), 165 rue Maskinongé app. 8, 30 photos.
  • 2580asherbrookeest : 5½, Montréal, 1 950 $/mois, 2580A rue Sherbrooke Est, 23 photos.