SPB Git forge

spb/lou-ka

Public

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

232commits 1branches 0releases
172.9 MBsize
maindefault branch
2 days agolast push
HTML 98.9% Python 0.6%
5.1 KB

# Habitations Jutras — connecteur jutras

Fiche générée automatiquement par scripts/gen_connector_docs.py le 2026-09-04 14:12 — ne pas éditer à la main, régénérer.

État : actif · Région : Centre-du-Québec · Backend : direct · Annonces actives : 35/35

# Description de la source

connecteur Habitations Jutras (jutras.com) Promoteur-gestionnaire au Centre-du-Québec et en Estrie. WordPress + Avada (Fusion Builder) : /condos-a-louer/ liste les projets locatifs (/condo//) ; chaque page projet expose une section « LES UNITÉS » (ancre id="prix") avec, par type d'unité (3½/4½/5½) : superficie, chambres, stationnements et « À partir de X$/mois ». Une annonce par (projet, type). Ville réelle tirée du ou de la phrase « situé à/dans … » de la page projet. Le projet Prisme (page spéciale /condos-a-louer/drummondville/prisme/) est parsé par regex type+prix. Exclu : Huit Cents (immeuble 50 ans et plus). robots.txt permissif. NB : certaines cartes placent leurs lignes (dont le prix !) dans des <li><div class="fusion-li-item-content"><b>…</b></div> plutôt que des <p> -> les deux formes sont lues. Galerie du projet (.fusion-gallery, miniatures -WxH ramenées à l'original) partagée par ses annonces. Aucune adresse civique par projet chez la source (ville seulement).</p> <ul> <li><strong>Site</strong> : <a href="https://jutras.com">https://jutras.com</a></li> <li><strong>Page des annonces</strong> : <a href="https://jutras.com/condos-a-louer/">https://jutras.com/condos-a-louer/</a></li> <li><strong>Secteurs couverts</strong> : Drummondville, Nicolet, Notre-Dame-du-Bon-Conseil, Sherbrooke, East Angus</li> <li><strong>Module</strong> : <code>louka/connectors/jutras.py</code> — classe <code>JutrasConnector</code></li> </ul> <h2 id="accès" tabindex="-1"><a class="heading-anchor" href="#accès" aria-hidden="true"><span class="anchor-icon" aria-hidden="true">#</span></a> Accès</h2> <ul> <li><strong>Type d'accès</strong> : pages HTML (rendu serveur)</li> <li><strong>Endpoint de base</strong> : <a href="https://jutras.com">https://jutras.com</a></li> <li><strong>URLs de départ (constantes du module)</strong> : <a href="https://jutras.com">https://jutras.com</a></li> <li><strong>Authentification</strong> : aucune — contenu public</li> <li><strong>Pagination</strong> : page de liste unique (pas de pagination)</li> <li><strong>Backend anti-bot / rendu</strong> : requests direct (session UA LouKaBot, throttling poli)</li> <li><strong>Politesse</strong> : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable <code>LouKaBot/1.0 (+https://www.lou-ka.com/bot)</code></li> </ul> <h2 id="champs-récupérés--schéma-cible" tabindex="-1"><a class="heading-anchor" href="#champs-récupérés--schéma-cible" aria-hidden="true"><span class="anchor-icon" aria-hidden="true">#</span></a> Champs récupérés → schéma cible</h2> <p>Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table <code>listings</code>. Complétude mesurée en SQL sur les 35 annonces actives ; exemple tiré d'une ligne réelle de la BD.</p> <table> <thead> <tr> <th>Colonne <code>listings</code></th> <th>Contenu</th> <th>Renseignée (actives)</th> <th>Exemple réel</th> </tr> </thead> <tbody> <tr> <td><code>title</code></td> <td>Titre de l'annonce</td> <td>100 %</td> <td>L’Atelier — 3 ½</td> </tr> <tr> <td><code>address</code></td> <td>Adresse civique</td> <td>0 %</td> <td>—</td> </tr> <tr> <td><code>city</code></td> <td>Ville (normalisée)</td> <td>100 %</td> <td>Drummondville</td> </tr> <tr> <td><code>sector</code></td> <td>Secteur / quartier</td> <td>0 %</td> <td>—</td> </tr> <tr> <td><code>unit_type</code></td> <td>Type d'unité (3½, 4½…)</td> <td>100 %</td> <td>3½</td> </tr> <tr> <td><code>price</code></td> <td>Loyer mensuel ($)</td> <td>60 %</td> <td>1 350 $</td> </tr> <tr> <td><code>bedrooms</code></td> <td>Chambres</td> <td>100 %</td> <td>1</td> </tr> <tr> <td><code>bathrooms</code></td> <td>Salles de bain</td> <td>0 %</td> <td>—</td> </tr> <tr> <td><code>area_sqft</code></td> <td>Superficie (pi²)</td> <td>91 %</td> <td>960</td> </tr> <tr> <td><code>availability_date</code></td> <td>Date de disponibilité</td> <td>100 %</td> <td>now</td> </tr> <tr> <td><code>lat</code></td> <td>GPS (lat/lng)</td> <td>0 %</td> <td>—</td> </tr> <tr> <td><code>description</code></td> <td>Description</td> <td>100 %</td> <td>Déménagez chez vous dès juin 2026 ! · 960 pi 2 · 1 chambre · 1 ou 2 stationnements* *S el…</td> </tr> <tr> <td><code>images</code></td> <td>Photos (JSON)</td> <td>100 %</td> <td>14 photo(s) — <a href="https://jutras.com/wp-content/uploads/2025/11/LAtelier_Drummondville.png">https://jutras.com/wp-content/uploads/2025/11/LAtelier_Drummondville.png</a></td> </tr> <tr> <td><code>amenities</code></td> <td>Commodités (JSON)</td> <td>0 %</td> <td>[]</td> </tr> <tr> <td><code>details</code></td> <td>Détails additionnels (JSON)</td> <td>100 %</td> <td>{"storage": true, "parking": {"available": true, "included": false}, "price_from": true}</td> </tr> <tr> <td><code>url</code></td> <td>URL de l'annonce source</td> <td>100 %</td> <td><a href="https://jutras.com/condo/atelier/#prix">https://jutras.com/condo/atelier/#prix</a></td> </tr> </tbody> </table> <h2 id="fréquence--budget" tabindex="-1"><a class="heading-anchor" href="#fréquence--budget" aria-hidden="true"><span class="anchor-icon" aria-hidden="true">#</span></a> Fréquence & budget</h2> <ul> <li><strong>Cadence observée</strong> (médiane des passages OK, sync_log) : ≈ 3.4 h</li> <li><strong>Dernier passage OK</strong> : 2026-09-04 13:48 — 35 trouvées, +0 / ~0 / -0</li> <li><strong>Throttling</strong> : 0.7 s entre requêtes (constante de classe <code>request_delay</code>)</li> <li><strong>Cache des pages détail (BD <code>detail_cache</code>)</strong> : activé — évite de re-visiter les fiches inchangées</li> </ul> <h2 id="volumétrie--complétude" tabindex="-1"><a class="heading-anchor" href="#volumétrie--complétude" aria-hidden="true"><span class="anchor-icon" aria-hidden="true">#</span></a> Volumétrie & complétude</h2> <ul> <li><strong>Annonces en BD</strong> : 35 au total, <strong>35 actives</strong></li> <li><strong>Première ingestion</strong> : 2026-08-09 · <strong>Dernière observation</strong> : 2026-09-04</li> <li><strong>Complétude clé (actives)</strong> : GPS 0 % · prix 60 % · photos 100 % · description 100 %</li> <li><strong>Runs journalisés (60 derniers)</strong> : 60, dont 0 en erreur</li> </ul> <h2 id="erreurs-connues--dépannage" tabindex="-1"><a class="heading-anchor" href="#erreurs-connues--dépannage" aria-hidden="true"><span class="anchor-icon" aria-hidden="true">#</span></a> Erreurs connues & dépannage</h2> <p>Aucune erreur dans les 60 derniers runs journalisés.</p> <p>Rejouer la source seule : <code>python3 run.py sync jutras</code> · vérifier ensuite <code>sync_log</code> (<code>SELECT * FROM sync_log WHERE source='jutras' ORDER BY ts DESC LIMIT 5;</code>).</p> <h2 id="licence-attribution--conditions" tabindex="-1"><a class="heading-anchor" href="#licence-attribution--conditions" aria-hidden="true"><span class="anchor-icon" aria-hidden="true">#</span></a> Licence, attribution & conditions</h2> <ul> <li>Scraping poli d'annonces <strong>publiques</strong> (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site.</li> <li>User-Agent <strong>identifiable</strong> avec page d'information et contact : <code>LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)</code> ; throttling 0.7 s ; cache détail pour minimiser les requêtes.</li> <li>Chaque annonce affichée sur Lou-Ka <strong>pointe vers l'annonce d'origine</strong> (colonne <code>url</code>) — la source garde le trafic de conversion.</li> <li>Retrait sur demande : <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a>.</li> </ul> <h2 id="historique" tabindex="-1"><a class="heading-anchor" href="#historique" aria-hidden="true"><span class="anchor-icon" aria-hidden="true">#</span></a> Historique</h2> <ul> <li>2026-08-09 — premières annonces de la source ingérées dans la BD.</li> <li>2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par <code>scripts/gen_connector_docs.py</code>).</li> </ul>