SPB Git

spb/lou-ka Public

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

HTML 99.7%
3.3 KB

# gestipro — Gestipro

  • site: https://gestipro.info/a-louer/
  • méthode: html
  • annonces: 96 → 96
  • couverture après (sur 96 annonces): prix 100%, adresse 100%, dispo 100%, superficie 23%, commodités 99%
  • fixture: ok · test: ok

# Champs extraits

  • Carte liste (Houzez) : titre, adresse + secteur (Nominatim), prix (item-price, virgule = milliers), statuts de disponibilité (label-status), type d'unité (h-type), vignette.
  • Fiche détail (nouveau, via self.detail + cache BD) :
    • description complète #property-description-wrap (1200 c., avant : og:description 600 c.) ;
    • bloc « Détails » structuré (paires strong/span) : Dimensions de la propriété (pi², structuré → area_sqft), Animaux toléré (→ pets oui/non/conditions, ex. « Chat seulement » → conditions), Frais et charge (ajouté aux amenities, ex. « Chauffage, eau chaude et électricité inclus »), Disponibilité (texte complet) ;
    • géolocalisation lat/lng depuis le JSON-LD schema.org Place.geo (96/96) ;
    • caractéristiques #property-features-wrap + galerie complète.

# Champs indisponibles à la source

  • Superficie : seuls ~23 % des fiches exposent « Dimensions de la propriété ».
  • Meublé : jamais mentionné.
  • Chambres/salles de bain exposées sur la carte et la fiche mais sans clé canonique details correspondante (non retenu).
  • « Année de construction », « Enquête de crédit » : sans équivalent schéma.

# Fragilités

  • Thème Houzez WordPress : sélecteurs .item-listing-wrap[data-hz-id], #property-detail-wrap .list-lined-item — un changement de thème casserait le parsing.
  • Le JSON-LD Place annonce priceCurrency: USD (coquille du site) — on n'utilise que geo.
  • Adresse Nominatim verbeuse (« …, Québec, QC, Canada, Charlesbourg, Québec ») : le découpage par virgules reste heuristique.

# Améliorations apportées

  • Pages détail désormais servies par le cache BD (self.detail, clé = hash de la carte liste) + budget de 150 vraies requêtes (compteur dans _fetch_detail, levée d'exception au-delà → pas de cache pollué).
  • Extraction du bloc « Détails » : superficie structurée (5 → 22 annonces avec area_sqft), animaux (pets sur 88/96), frais et charge (inclusions dérivées par finalize), disponibilité complète.
  • Description complète (au lieu du meta og tronqué), lat/lng (0 → 96/96).

# Échantillon avant/après

  • Avant : « 7170 boul. Cloutier – Le Maria-Goretti » — 2427 $, 5½, dispo « 1er juillet 2027, Dans les mois à venir », area NULL, pets NULL, pas de lat/lng, inclusions {hot_water, internet}.
  • Après : même annonce — pets=conditions (« Chat seulement »), lat/lng 46.8518/-71.2747, description complète (ESPACE DE VIE / FRAIS ET CHARGE / IMMEUBLES), amenities + « Frais et charge : Eau chaude et wifi inclus ».
  • Après : « 1490-1500 Maire-Beaulieu – Bourg de Coulonge » (studio) — area_sqft 456 (structuré), pets=conditions, inclusions {heating, electricity, hot_water}.

# Lacunes génériques de normalisation observées

  • « Chauffage et électricité à la charge des locataires » n'est pas reconnu comme négatif → heating/electricity: true à tort quand la description le mentionne.
  • « Actuellement vacant » n'est pas reconnu par parse_availability_dateavailability_date NULL alors que le logement est libre.