beaudoin — Société Beaudoin immobilier
- site: https://www.beaudoinimmobilier.ca/index.php/wp-json/wp/v2/properties (thème Houzez)
- méthode: json-api (WordPress REST)
- annonces: 12 → 12
- couverture après (sur 12 annonces): prix 100%, adresse 100%, dispo 100%, superficie 67%, commodités 100%
- fixture: ok · test: ok (2 passed)
Champs extraits
- API REST /wp-json/wp/v2/properties (déjà en place) : id, titre, lien, prix (
fave_property_price+ postfix), adresse géocodée (fave_property_map_address), lat/lng, type d'unité (taxonomieproperty_type), disponibilité (taxonomieproperty_status), ville/secteur (taxonomieproperty_city), description (content), galerie (fave_property_images→ /media). - Nouveaux champs de la même API :
additional_features(PHP sérialisé, paires titre/valeur) → amenities : « Eau chaude incluse », « Cuisinière incluse », « Réfrigérateur inclus », « Lave-vaisselle inclus », « Air climatisé inclus », « Espace de rangement inclus », « Chiens et chats acceptés », « Buanderie sur place » — la normalisation centrale en dérive inclusions/appliances/ac/storage/pets ;fave_property_size(+ préfixe « Pieds carrés ») → area_sqft structuré (67 % des annonces l'ont à la source) ;fave_property_bedrooms/fave_property_bathrooms→ amenities « N chambres », « N salle(s) de bain ».
Champs indisponibles à la source
- Superficie absente sur 4/12 propriétés (champ vide chez Houzez).
- Meublé, fumeur, stationnement (type/prix) : non renseignés.
- Contact agent : les posts
houzez_agentn'ont pas de route REST (rest_no_route) — seuls les courriels présents dans la description sont récupérés par la normalisation. - Taxonomie
property_feature: vide sur toutes les propriétés actuelles (le gestionnaire utilise plutôtadditional_features).
Fragilités
additional_featuresest du PHP sérialisé parsé par regex : des guillemets échappés dans un libellé pourraient fausser le découpage (le parseur tolère\").- La disponibilité vient d'une taxonomie de type « 08 - Disponible pour août » : le préfixe numérique est retiré, la normalisation centrale parse le reste.
- L'API est sous
/index.php/wp-json/...(permaliens non réécrits) — si le site active la réécriture, l'URL changera. - Filtre Grand Montréal par liste blanche de villes : à maintenir si le gestionnaire ajoute des secteurs.
- Lacune générique de normalisation constatée : « Chiens et chats acceptés » est classé
pets="conditions"(via le motif « chats acceptés » de_PETS_COND_RE) alors que « oui » serait plus juste — à corriger dans normalize.py, pas localement.
Améliorations apportées
- Extraction des « caractéristiques additionnelles » Houzez (inclusions, électroménagers, climatisation, animaux, buanderie) : commodités passent de 0 % à 100 %.
- Superficie structurée (
fave_property_size) : 0 % → 67 % (le reste est vide à la source). - Chambres / salles de bain ajoutées aux commodités affichables.
Échantillon avant/après
Grand 5 1/2 au Bois de Champbellé – 525 Saint-Charles O (2235 $, 5½, dispo maintenant)
- avant : area_sqft=None, amenities=[], details=
{"pool": true, "storage": true} - après : area_sqft=1250, amenities=["Eau chaude incluse", "Cuisinière incluse", "Réfrigérateur inclus", "Lave-vaisselle inclus", "Air climatisé inclus", "Espace de rangement inclus", "3 chambres", "2 salles de bain"], details=
{"inclusions": {"hot_water": true}, "appliances": {"fridge": true, "stove": true, "dishwasher": true}, "ac": true, "pool": true, "storage": true}
5 1/2 Penthouse au Carignan – 475 Saint-Charles O (3015 $, 5½)
- avant : area_sqft=None, amenities=[], details=
{"balcony": true, "pool": true} - après : area_sqft=1710, amenities=8 items, details=
{"inclusions": {"hot_water": true}, "appliances": {"fridge": true, "stove": true, "dishwasher": true}, "ac": true, "balcony": true, "pool": true, "storage": true}