Skip to content
# interrent — InterRent REIT (irent.com)
- site: https://www.irent.com/communities/city/montreal (flux RSC Next.js, 1 requête)
- méthode: json-api (JSON embarqué dans le flux
self.__next_f.push)
- annonces: 203 → 203
- couverture après (sur 203 annonces): prix 100%, adresse 100%, dispo 100%, superficie 99%, commodités 100%
- fixture: ok · test: ok
- amenities : nœud structuré
Amenities.Amenity (19+ items par communauté) — AVANT : le connecteur lisait amenities_TextField, champ inexistant → amenities=[] sur 100% des annonces (bug corrigé, ancien champ gardé en repli)
- inclusions structurées :
Utilities.Utility (Heat, Water, Hot Water, Hydro…) → details.inclusions{heating, hot_water, electricity, internet, cable} + item « Utilities included: … » dans les amenities
- pets : indicateurs structurés
PetFriendly / PetFriendlyCats|SmallDogs|LargeDogs / PetFriendlyNotAllowed → oui/conditions/non (203/203) + PetDetails en description
- details.parking : champ
ParkingDetails (« Indoor Parking: $150 / month ») → available/type/included/price (prix min), + texte en description
- details.contact :
ContactInformation (téléphone + courriel du bureau de location)
- description : résolution des références texte RSC
$NN → vraie description de l'immeuble (BuildingDescription), + promotion en cours (Promotions.Title), + description de la suite
- area_sqft : maintenant explicite depuis
SquareFeet (structuré) au lieu de dérivé du texte
- déjà extraits : prix (Rate), type (Bedrooms), sdb, dispo (AvailabilityDate), adresse/quartier/GPS (Location), photos + plans d'étage
# Champs indisponibles à la source
- 1 suite sans SquareFeet
- furnished : non exposé
- textes de la source en anglais (amenities, descriptions) — les règles de normalize.py sont bilingues pour l'essentiel
# Fragilités
- Dépend du format RSC de Next.js (
self.__next_f.push + références $NN:Txxx,) : un changement de framework/App Router casserait le parsing (couvert par la fixture)
- Le filtre Grand Montréal repose sur la table _GM_CITIES : une nouvelle ville QC d'InterRent serait silencieusement ignorée (comportement voulu)
- Les pseudo-suites « Promotional Price » sans numéro restent exclues ; celles AVEC numéro (ex. « app. XXX1 ») sont conservées telles quelles
# Améliorations apportées
- Correction du bug amenities (champ inexistant) : 0% → 100%
- pets structuré 0% → 100% (oui 154, conditions/non selon communauté)
- inclusions/parking/contact structurés par communauté
- description réelle de l'immeuble (références RSC résolues) + promotions
- superficie explicite (SquareFeet)
# Échantillon avant/après
- Trent & Kingsley Plan E AVANT : amenities=[], details={}, pets=None, desc=
578 pi² — 1 sdb — plan 7460 Ch. Kingsley - Plan E
- Trent & Kingsley Plan E APRÈS : 20 amenities (« Laundry facilities », …, « Utilities included: Heat, Water »), pets=
oui, details={inclusions{heating}, parking{available, included:false, price:110}, contact{438-476-2316, rentsync-leads@rentclv.com}, elevator, balcony, laundry, storage}, desc=… + Promotion : Two Months Free* + description de l'immeuble + stationnement