[Tutoriel] : Comment optimiser vos recherches immobilières avec Knime ?
Vous vous demandez comment optimiser les recherches immobilières ? En cette période de confinement vous rêvez probablement d’une habitation plus grande ? Mais comment faire pour ne pas vous retrouver à arpenter internet, scrollant les pages en renseignant encore et toujours les mêmes critères. Avec KNIME ANALYTICS PLATFORM, les annonces viennent à vous directement !
Pour optimiser les recherches immobilières, collecter les informations d’un site web
Avant tout, il va falloir effectuer une première recherche sur un site d’annonces immobilières afin de générer une page de résultats avec vos critères. Copier l’url de la page de résultats.
Identifier les contenus à conserver
J’ai décidé de remonter les éléments suivants : Type de bien, Nombre de pièces, Montant du loyer, Le type de charges (comprises ou non), Arrondissement, Quartier, Nombre de Chambres et la Surface.
Pour cela, il faut copier les expressions XPath liées. Avec Google Chrome, sur la page de résultats, faire un clic droit et sélectionner « Inspecter ». Après avoir fait CTRL+SHIFT+C, vous pouvez repérer la partie du code associée en cliquant sur un bloc d’informations.
Ensuite, allez chercher l’information ciblée en développant les sous-parties dans le code identifié précédemment. Puis faites un clic droit « Copy », puis sélectionner « Copy full XPath » et coller dans un fichier Excel. Ajouter une colonne avec le nom de l’élément et le type de données attendu en sortie (par soucis de simplicité nous allons fixer le type sur « String » pour chaine de caractères).
Voici à quoi ressemble une expression XPath : « /html/body/div[2]/div/div/div[3]/div/div[2]/div[1]/div[2]/div[1]/div[1]/div »
Le chiffre en rouge correspond à la première annonce affichée, il faudra donc prévoir dans KNIME une étape pour faire varier ce chiffre afin de ne pas avoir à répéter cette étape pour toutes les annonces. Recommencer l’étape pour tous les éléments à remonter. Scinder la colonne avec l’XPath en 2 au niveau du chiffre à faire varier. Vous devriez obtenir le résultat ci-dessous.
Création du Workflow Knime
Avec ces informations, il est temps de commencer notre Workflow !
- Créer une table avec la boîte Table Creator et insérer l’URL de la page des résultats de recherche dans une colonne URL.
Pour la suite nous allons utiliser des boîtes issues d’une extension Knime qu’il faudra préalablement installer : Palladian.
- Ajouter la boîte http Retriever et dans la fenêtre de configuration sélectionner URL en tant que URL input puis valider.
- Puis ajouter la boîte HTML Parser et selectionner Result en Input puis valider.
- Ensuite, sur une autre branche du Workflow, ajouter une nouvelle boîte Table Creator et coller les données du fichier Excel contenant les XPath (renommer les colonnes en conséquence).
- A la suite ajouter une boîte Counting Loop Start et dans la fenêtre de configuration définir un nombre de boucle (correspond au nombre d’annonce à remonter), ici 35.
Continuez en ajoutant une boîte String Manipulation pour concaténer XPath1, le numéro d’itération actuel et XPath2 dans une nouvelle colonne XPath0 comme ci-dessous.
- Il faut ensuite ajouter une autre boîte String Manipulation pour remplacer « / » par « /dns : » (condition requise pour l’utilisation de la boîte XPath dans l’étape 9).
- A cette étape, ajouter une boîte Table Row To Variable Loop Start.
- Puis ajouter une boîte XPath afin de relier les 2 branches du Workflow. Dans la fenêtre de configuration, dans l’onglet Settings cliquer sur Add XPath et valider directement sans modification. Passer sur l’onglet Flow Variables et à l’aide des menus déroulants, affecter respectivement les variables Nom, XPath0 et Type à newColumn0, xpath0 et returnType0 avant de valider.
- A la suite, ajouter une boîte Loop End (Column Append).
- En enfin, ajouter une boîte Loop End.
En regardant les résultats, vous pouvez déjà voir que nous avons des données à notre disposition même si elles ne sont pas très lisibles. Nous allons devoir ajouter dans le workflow une partie pour nettoyer les données.
Traiter les données
Nettoyer les données
- Commencer par ajouter une boîte Column Filter pour conserver uniquement les colonnes suivantes : Type, Nombre de pièces, Loyer, Charges, Arrondissement, Quartier, Surface, Nombre de Chambres et Iteration.
- Ensuite, ajouter une boîte Unpivoting et dans la fenêtre de configuration, dans la partie Value columns inclure Iteration. Dans la partie Retained columns exclure Iteration.
A la suite de la boîte Unpivoting constituer une branche parallèle.
a. Ici, ajouter une boîte Column Filter pour conserver les colonnes ColumnValues et Nombre de Chambres.
b. Et là, ajjouter une boîte Rule Engine afin de catégoriser les données dans une nouvelle colonne comme ci-dessous.
- 3. Ajouter une boîte Pivoting et dans la fenêtre de configuration, dans l’onglet Groups mettre uniquement ColumnValues dans la liste Group column(s). Puis dans l’onglet Pivots conserver uniquement la colonne prediction dans la liste Pivot column(s). Enfin dans l’onglet Manual Aggregation, ajouter Nombre de Chambres avec l’agrégation First (veillez à bien cocher Missing) et valider.
Répéter l’étape 3 pour en remplaçant le Nombre de chambres par la Surface.
- A l’aide d’une boîte Joiner effectuer une jointure entre les 2 branches de l’étape 3. Dans la fenêtre de configuration, dans l’onglet Joiner Settings ajouter la clé de jointure sur Row ID. Dans l’onglet Column Selection, conserver toutes les colonnes sauf une occurrence de ColumnValues et valider.
- Ajouter une boîte Column Aggregator pour concaténer les colonnes portant le nom Autres (provenant des 2 branches précédentes).
Répéter l’opération pour Surface et Nombre de chambre.
- Sur la branche principale, à la suite de la boîte Unpivoting (fin de l’étape 2) ajouter une boîte Column Filter pour exclure RowIDs et ColumnNames.
- Ajouter une boîte Row Filter pour exclure les lignes où la colonne type contient une valeur nulle.
- Nous nous retrouvons donc avec 2 branches distinctes dans le Workflow que nous allons réunir avec une boîte Joiner et la clé de jointure RowID. Conserver une version de chaque colonne et exclure les 2 occurrences de ColumnValues.
Extraire les données
- Ajouter une boîte Column Resorter pour arranger les informations dans l’ordre que vous voudrez.
- Ajouter une boîte Excel Writer (XLS) pour générer l’extrait final.
Les données finales
Voilà ! Dès maintenant plutôt que de vous rendre sur un ou plusieurs sites internet, renseigner vos critères de recherches et scroller les différentes annonces ; vous pouvez simplement relancer le Workflow que vous avez fait afin d’obtenir un fichier avec toutes les annonces.
Ce tutoriel est déclinable pour toutes les informations que vous souhaiteriez remonter depuis un site internet. Alors à vos claviers !
Notre article sur l’optimisation des recherches immobilières avec Knime s’achève ici.
Vous souhaitez voir KNIME en action ? Participez à notre prochain webinar le mardi 26 mai à 11h !
Retrouvez tous nos tutoriels KNIME par ici !
Author Profile
- Hello ! Passionnée du marketing digital, je travaille quotidiennement avec les différents services de Mydral. Retrouvez dans mes publications du contenu sur le secteur du Big Data, de la BI et de l'IA. Le SEO ou l'e-réputation n'ont pas de secrets pour moi !
Latest entries
- Actualités5 mai 2022Newbie Bootcamp Award : notre concours de la meilleure data visualisation.
- Actualités5 avril 2022Quels enjeux pour l’analyse de vos données hôtelières ?
- Webinars25 mars 2022La maturité des Fintechs avec la data
- Actualités21 mars 2022Livre Blanc : réussir le pilotage des établissements d’enseignement
yann
Bonjour, je bloque sur la configuration du node Xpath, apparemment il y a quelque chose qui ne va pas avec les variables. Si vous avez une solution , ce serait avec plaisir. Très bon Tuto au passage . Merci
Sylvana AH-LAYE
Bonjour Yann,
Merci pour votre intérêt 🙂
J’ai transféré votre demande à l’un de nos experts qui ne manquera pas de revenir vers vous.
Je vous souhaite une belle journée !