app_urbains — Appartements Urbains
- site: https://www.appartementsurbains.ca/projets-residentiels/ (+ micro-sites projets : lecharlie.ca, condosarchipel.ca, quartiercartier.ca, …)
- méthode: html (micro-sites)
- annonces: 17 → 16 (une unité retirée par la source entre les deux syncs)
- couverture après (sur 16 annonces): prix 100%, adresse 100%, dispo 44%, superficie 100%, commodités 100%
- fixture: ok · test: ok (2 passed)
Champs extraits
- Menu / page projets : nom du projet + quartier (Montcalm, Limoilou, Ste-Foy, Loretteville, Lévis).
- Page projet (micro-site WordPress/Oxygen, suivie via redirection 301) :
- tableau « unités disponibles » : n° d'unité, type (3½…), prix, disponibilité (« Maintenant », « 1er juillet »), superficie (colonne « Superficie (pi²) », nouvelle extraction → texte brut
« 915 pi² »dans amenities, finalize() dérive area_sqft) ; - adresse civique : en priorité la carte wpgb du projet lui-même (corrige Le Charlie qui héritait de l'adresse du Centre Vidéotron), sinon 1re adresse de la page ;
- commodités : blocs « avantages » des deux générations de gabarits (
.listing-avantages h4pour Archipel/Quartier Cartier +span.ct-spanpour Le Charlie) ; - téléphone du projet (lien
tel:structuré, décodé) →details.contact.phone; - description (og:description), photos (wp-content/uploads).
- tableau « unités disponibles » : n° d'unité, type (3½…), prix, disponibilité (« Maintenant », « 1er juillet »), superficie (colonne « Superficie (pi²) », nouvelle extraction → texte brut
Champs indisponibles à la source
- Animaux/inclusions par unité : seulement au niveau projet, en texte libre (« Animaux permis-20lbs ») — dérivés par la normalisation centrale.
- Disponibilité pour L'Archipel : le tableau n'a pas de colonne « Disponibilité » (les unités listées sont implicitement disponibles) — laissé vide, aucune valeur inventée.
- Superficie du balcon, plan PDF, étage : affichés uniquement dans un visualiseur interactif JS (admin-ajax + nonce), non accessibles statiquement.
- Le Zircon / Les Ormes / Quartier Cartier : « Aucune unité disponible » actuellement (0 annonce, normal).
Fragilités
- Chaque projet redirige (301) vers son propre micro-site (domaines différents) : la structure des tableaux varie (« Disponibilité … Superficie » vs « Type … Superficie »).
- Sélecteurs Oxygen (
c-full-width flex-row,.listing-avantages) propres au gabarit TactikMedia — cassables à la refonte. - La page liste imprime des warnings PHP dans le HTML (« Undefined variable $post ») — le parsing des noms de projets doit rester tolérant.
- Le détail par unité (
/unites/?_unite=N) est un viewer JS avec nonce WP : ne pas essayer de le scraper. - Le CPT WordPress
unitesest exposé via /wp-json/ mais sans champs ACF (acf: []) — inutilisable.
Améliorations apportées
- Superficie par unité extraite du tableau (0 % → 100 % de couverture area_sqft).
- Adresse du projet corrigée (carte wpgb du projet prioritaire — Le Charlie passait de « 250 Bd Wilfrid-Hamel » à « 1385 Rue Monseigneur-Plessis »).
- Commodités désormais extraites sur les micro-sites récents (
.listing-avantages h4) : Archipel et autres passent de 0 à ~12 commodités. - Téléphone de contact (
tel:) ajouté dansdetails.contact.phone.
Échantillon avant/après
L'Archipel — unité 120 (1810 $, 4½)
- avant : area_sqft=None, amenities=[], details=
{}, address=7070 Bd Guillaume-Couture, Lévis… - après : area_sqft=1241, amenities=["Béton pour une insonorisation optimale", "2 ascenseurs", "Chute à déchets", …, "1241 pi²"], details=
{"inclusions": {"heating": true}, "ac": true, "elevator": true, "balcony": true, "pool": true, "gym": true, "contact": {"phone": "418-717-2105"}}
Le Charlie — unité 504 (1630 $, 3½, dispo Maintenant)
- avant : area_sqft=None, address=
250 Bd Wilfrid-Hamel, Québec, QC G1L 5A7(adresse du Centre Vidéotron !) - après : area_sqft=915, address=
1385 Rue Monseigneur-Plessis, Québec, QC, details enrichi de"contact": {"phone": "418-717-2105"}