logement_mauricie — Logement Mauricie
- site: http://logementmauricie.com (builder type WebSelf, HTML peu sémantique, regroupement de propriétaires +200 logements)
- méthode: html plat — 4 pages secteur (Trois-Rivières, Cap-de-la-Madeleine, Shawinigan, Shawinigan-Sud), 4 requêtes/sync, pas de fiche individuelle
- annonces: 1 (17 immeubles décrits, mais la quasi-totalité affiche « Actuellement disponible : Complet » ou vide ; seules les vraies vacances sont retenues)
- couverture (sur 1 annonce): prix 100%, adresse 100%, ville 100%, type 100%, dispo 100%, description 100%, images 100% — superficie/GPS jamais publiés
- fixture: ok (4 requêtes) · test: ok (2 verts)
Champs extraits
- Chaque immeuble = un
- external_id = id GUID du widget (stable dans le builder) ; URL = page secteur + ancre (pas de fiche individuelle).
- Filtre de vacance : on ne retient que les widgets dont « Actuellement disponible » a une valeur réelle (≠ vide, ≠ « - », ≠ « Complet ») — c'est la sémantique du site (les immeubles complets restent affichés).
- Adresse civique =
du widget (« 3170 rue Louis Pasteur ») ; ville réelle fixée par la page secteur : cap-de-la-madeleine → Trois-Rivières (secteur Cap-de-la-Madeleine), shawinigan-sud → Shawinigan (secteur Shawinigan-Sud) — villes fusionnées en 2002.
- unit_type = normalize_unit_type(valeur « Actuellement disponible ») (« 2 1/2 » → 2½) ; price_label = champ « Combien $ » (« $ 695,00 » → 695 via parse_price) ; availability = champ « Date » tel quel (« Mai, juin et juillet »).
- description = bloc de champs complet + paragraphe secteur (texte brut, textmine structure chauffé/éclairé, buanderie, non fumeur… au finalize()).
- Images du widget (photos d'immeuble ../attachments/Image/…, résolues en absolu ; icônes google-maps/logo exclues).
Champs indisponibles à la source
- Superficie, GPS, nombre d'unités libres par type précis : jamais publiés. Le contact est un propriétaire individuel (nom + téléphone, conservés dans la description).
- Le parc annoncé (+200 logements) n'est pas listé unité par unité : 1 « annonce » = 1 immeuble avec vacance.
Fragilités
- Une seule vacance au moment de la construction : le volume variera de 0 à ~17 selon les saisons ; un sync à 0 annonce est plausible et légitime (tout est « Complet »).
- HTML de builder : les libellés de champs sont saisis à la main (variantes « Date : », « Date : - », « Stationnements ») — le parseur tolère les deux-points/espaces/pluriels, mais un libellé inédit serait ignoré.
- Site en http (pas de https) ; certificat absent — requêtes en clair.
- Quand plusieurs types sont libres à la fois (« 1 x 3½ et 1 x 4½ »), normalize_unit_type ne retiendra que le premier type.
Échantillon
- widget-4cf84820-… : 2 1/2 — 3170 rue Louis Pasteur, Trois-Rivières, 695 $, dispo « Mai, juin et juillet », chauffé éclairé oui, semi-meublés et rénovés, Wi-Fi illimité, 1 photo.