SPB Git

spb/lou-ka Public

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

HTML 99.7%
3.1 KB

# boreal_abitibi — Constructions Boréal Abitibi

  • site: https://constructionsborealabitibi.com/locations/
  • méthode: html + AJAX (admin-ajax.php get_rents)
  • annonces: 5 (Val-d'Or ×4, Malartic ×1 — logements neufs, seul acteur structuré à Malartic)
  • couverture (sur 5 annonces): prix 100%, disponibilité 100% (« Disponible en août/… »), ville 100%, adresse 100% (avec n° d'app.), type 100% (Grandeur), chambres/sdb/garage 100%, étage 100%, inclusions 100%, animaux 100% (non), images 100%, description 100%
  • fixture: ok · test: ok

# Champs extraits

  • WordPress + thème maison (Tailwind) : la grille /locations/ est vide côté serveur et remplie en AJAX. Le connecteur lit le HTML de /locations/ pour récupérer le nonce (var ajax_object = {…}), puis POST admin-ajax.php action=get_rents (paginé via max_num_pages ; town vide = toutes les villes, donc un seul appel couvre Val-d'Or ET Malartic — le filtre ?rent_town= de l'URL n'est pas nécessaire).
  • Chaque « rent » du JSON est une carte HTML article.listing-item : ville (div.h4 strong), adresse + n° d'appartement (h3 a), prix (« 1 550 $ / mois »), « Disponible en », pictos chambres/salles de bain/garage, mention « Non meublé, non chauffé, non éclairé », photo (data-srcset, la plus grande résolution).
  • Fiche détail /loyer/<slug>/ (via self.detail + cache BD, budget 30) : tableau de specs (rangées lg:table-row h2/div) — Grandeur « 4 et demi » → unit_type 4½, Étage, Parking, Inclusions ; description (« Proximité des écoles… ») ; galerie lazy-load (data-src, redimensionnements retirés) ; la mention « TOUS NOS LOGEMENTS SONT NON-FUMEUR ET NOUS N'ACCEPTONS PAS LES ANIMAUX » affichée sur chaque fiche alimente pets = non.
  • external_id = slug /loyer/<slug> (CPT WordPress) — stable.

# Périmètre (exclusions volontaires)

  • Rien à exclure : le CPT « loyer » ne contient que du résidentiel locatif (les terrains à vendre sont une page séparée).

# Champs indisponibles à la source

  • Superficie, GPS : jamais publiés.
  • Prix affiché unique par carte (pas de « à partir de »).

# Fragilités

  • Le nonce AJAX est requis : s'il expirait entre le GET et le POST (improbable, quelques secondes), la requête échouerait — le sync suivant repart de zéro. À l'enregistrement de fixture, le nonce lu du HTML capturé rend le POST déterministe au rejeu.
  • Les classes de carte sont des utilitaires Tailwind : le parsing repose sur les pictos icon-bedroom/bathroom/garage, les regex de prix/« Disponible » et div.h4 strong — les éléments les plus sémantiques disponibles.
  • posts_per_page=12 (valeur du site) conservé ; garde-fou max_pages=10.

# Notes

  • Villes réelles observées : Val-d'Or (3e Avenue, rue Giguère), Malartic (Dargis Ménard).
  • Tout le parc actuel est en 4½ (2 chambres, 1 sdb, garage/stationnement), 1 400 $–1 650 $/mois, non meublé/chauffé/éclairé.
  • robots.txt WP standard (admin-ajax.php explicitement Allow), sitemap sitemap_index.xml ; politesse 0,6 s (GET et POST) ; 7 requêtes par sync au volume actuel.