Retour au blog
Cas d'utilisation
Robert Munceanu14 juillet 202110 min de lecture

Le guide complet du web scraping des données immobilières

Le guide complet du web scraping des données immobilières

Pourquoi extraire des données immobilières

Le web scraping garantit que les informations extraites sur l’immobilier sont précises, fiables et à jour. Ainsi, on peut prédire si le marché immobilier va exploser prochainement ou voir dans quelle fourchette de prix un bien immobilier sera concurrentiel.

Pour les entreprises, les données Web sont précieuses car elles permettent de prendre de meilleures décisions, de fixer des prix plus justes et d'augmenter la marge bénéficiaire. Cependant, le hic, c'est que chaque information doit être aussi récente que possible, ce qui fait du web scraping la solution évidente.

Les types de données immobilières les plus couramment extraites sont les suivants :

  • Type de bien
  • Prix de vente
  • Emplacement
  • Superficie
  • Équipements
  • Loyer mensuel
  • Places de parking
  • Agent immobilier

Les informations ci-dessus peuvent faire ou défaire une agence immobilière. Elles font une énorme différence en matière de communication, de stratégie et d'efficacité, mais le plus grand avantage réside dans la connaissance approfondie que les agents acquièrent de leurs biens et du marché. Après cela, il ne reste plus qu'à trouver le bon client.

Examinons quelques scénarios qui illustrent l'intérêt du web scraping :

Agences immobilières

  • Prise de décision : prendre des risques fait partie du métier, mais cela ne signifie pas qu’il faille le faire à l’aveuglette. Il est indispensable de faire des recherches avant d’acheter ou de vendre pour réussir, et plus on dispose d’informations, meilleures sont les transactions.
  • Prévoir l'évolution du marché : il est crucial de savoir quand acheter et vendre des biens immobiliers pour obtenir le meilleur résultat et le plus rentable. Certains types de biens connaissent un essor fulgurant tandis que d'autres perdent de leur attrait. Certaines zones prospèrent tandis que d'autres stagnent. Savoir ce qui se profile à l'horizon est la clé de la pérennité d'une entreprise.

Les particuliers

Le web scraping ne sert pas uniquement à aider les entreprises. En réalité, ce qui contribue à sa popularité, c’est notamment sa facilité d’utilisation pour un particulier. Bien sûr, il faut avoir quelques connaissances en informatique, mais il existe de nombreux tutoriels pour vous aider. D’ailleurs, celui-ci en fait partie !

  • Achat et vente : vous devez déterminer avec précision la valeur d’un bien immobilier avant de l’acheter ou de le vendre. Ce serait dommage de vendre la maison de votre enfance et de la voir une semaine plus tard sur un site immobilier au double du prix, n’est-ce pas ?
  • Investissement : si vous aimez investir dans l'immobilier, que ce soit en achetant à bas prix pour revendre plus tard avec un bénéfice ou simplement en louant le bien, il est fortement recommandé de savoir rapidement quand vous atteindrez le seuil de rentabilité et quels rendements vous pouvez espérer.

Bon, assez parlé des cas d'utilisation. Passons au code !

Pour commencer, supposons que nous recherchons une nouvelle maison à New York. Nous voulons acheter un bien immobilier avec au moins deux chambres et, bien sûr, une salle de bain. Nous allons donc lancer notre recherche sur Realtor, extraire les données de ce site et les comparer pour trouver la meilleure offre.

Il existe différentes façons d'extraire du contenu à partir de pages web. Cet article va vous expliquer deux méthodes : l'une où nous créons notre scraper web à partir de zéro, et l'autre où nous utilisons un outil déjà existant.

Commençons par essayer de le faire nous-mêmes. Ce code s'avérera utile par la suite lorsque nous utiliserons un outil professionnel de web scraping.  

Créer un scraper web pour extraire des données immobilières

J'ai choisi d'écrire en Python en raison de sa grande popularité dans le domaine du web scraping. Nous proposons un tutoriel général sur l'extraction de données web en Python que je vous invite à consulter !

Inspecter le code du site web

Les données que nous devons extraire se trouvent dans les balises imbriquées de la page web en question. Avant de commencer le scraping, nous devons les localiser. Pour ce faire, il suffit de cliquer avec le bouton droit de la souris sur l'élément et de sélectionner « Inspecter ».

Browser right-click menu on a real estate listing image with Inspect highlighted

Une fenêtre « Boîte d'inspection du navigateur » s'ouvrira, comme ceci :

Chrome DevTools Elements panel highlighting HTML for property listing result cards

Dans cette fenêtre, nous allons naviguer pour trouver les balises et les classes sous lesquelles se trouvent nos données essentielles. Cela peut sembler un peu intimidant au début, mais cela devient plus facile avec l'expérience !

Trouvez les données que vous souhaitez extraire

Nous pouvons voir que tout ce que nous devons extraire se trouve dans la balise <li> avec la classe « component_property-card ». Si nous allons encore plus loin dans la balise, nous observons que les données se rapportant au nombre de lits et de salles de bains se trouvent sous l’attribut « data-label » avec les valeurs « pc-meta-beds » et « pc-beta-baths », respectivement. Sachant cela, nous pouvons passer à l’écriture de notre code !

Préparez l&#x27;environnement de travail

Comme mentionné précédemment, nous utiliserons Python comme langage de programmation ; vous devez donc le télécharger et l'installer.

Vous pouvez utiliser l'IDE de votre choix, mais je vous recommande d'utiliser PyCharm.

Une fois que vous avez créé un nouveau projet, facilitez-vous la tâche en utilisant ces bibliothèques :

  • Selenium : utilisé pour les tests Web et l'automatisation des activités du navigateur.
  • BeautifulSoup : utilisé pour l'analyse de documents HTML et XML.
  • Pandas : utilisé pour la manipulation de données. Les données extraites seront stockées dans un format structuré.

Leur installation au sein du projet est très simple. Il suffit d'utiliser cette ligne de commande dans le terminal du projet : python -m pip install selenium beautifulsoup4 pandas

Écrivez le code

Commençons par importer les bibliothèques que nous avons installées précédemment :

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

Pour extraire les données du site web, nous devons les charger en configurant le webdriver pour qu'il utilise le navigateur Chrome. Pour ce faire, il suffit de spécifier le chemin d'accès où se trouve le chromedriver. N'oubliez pas d'ajouter le nom de l'exécutable à la fin, et pas seulement son emplacement !

driver = webdriver.Chrome('your/path/here/chromedriver')

Outre le nombre de chambres et de salles de bains, nous pouvons également extraire l'adresse, le prix et, pourquoi pas, la superficie du bien immobilier. Plus nous disposons d'informations, plus il sera facile de choisir un nouveau logement.

Déclarez les variables et définissez l'URL du site web à scraper.

prices = []
beds = []
baths = []
sizes = []
addresses = []
driver.get('https://www.realtor.com/realestateandhomes-search/New-York_NY')

Nous devons extraire les données du site web, qui se trouvent dans les balises imbriquées comme expliqué précédemment. Recherchez les balises comportant les attributs mentionnés précédemment et stockez les données dans les variables déclarées ci-dessus. N'oubliez pas que nous voulons uniquement enregistrer les propriétés comportant au moins deux chambres et une salle de bain !

content = driver.page_source
soup = BeautifulSoup(content, features='html.parser')
for element in soup.findAll('li', attrs={'class': 'component_property-card'}):
   price = element.find('span', attrs={'data-label': 'pc-price'})
   bed = element.find('li', attrs={'data-label': 'pc-meta-beds'})
   bath = element.find('li', attrs={'data-label': 'pc-meta-baths'})
   size = element.find('li', attrs={'data-label': 'pc-meta-sqft'})
   address = element.find('div', attrs={'data-label': 'pc-address'})

   if bed and bath:
       nr_beds = bed.find('span', attrs={'data-label': 'meta-value'})
       nr_baths = bath.find('span', attrs={'data-label': 'meta-value'})

       if nr_beds and float(nr_beds.text) >= 2 and nr_baths and float(nr_baths.text) >= 1:
           beds.append(nr_beds.text)
           baths.append(nr_baths.text)

           if price and price.text:
               prices.append(price.text)
           else:
               prices.append('No display data')

           if size and size.text:
               sizes.append(size.text)
           else:
               sizes.append('No display data')

           if address and address.text:
               addresses.append(address.text)
           else:
               addresses.append('No display data')

Parfait ! Nous avons toutes les informations dont nous avons besoin, mais où les stocker ? C'est là que la bibliothèque pandas s'avère utile et nous aide à structurer les données dans un fichier CSV que nous pourrons utiliser ultérieurement.

df = pd.DataFrame({'Address': addresses, 'Price': prices, 'Beds': beds, 'Baths': baths, 'Sizes': sizes})
df.to_csv('listings.csv', index=False, encoding='utf-8')

Si nous exécutons le code, un fichier nommé « listings.csv » sera créé, et à l'intérieur, nos précieuses données !

Nous avons réussi ! Nous avons créé notre propre outil de web scraping ! Passons maintenant directement à la pratique et voyons quelles étapes nous devons suivre et quelles lignes de code nous devons modifier pour utiliser un outil de scraping.

Utilisation d&#x27;une API de web scraping

Pour ce scénario, nous utiliserons bien sûr WebScrapingAPI.

Créer un compte WebScrapingAPI gratuit

Pour utiliser WebScrapingAPI, vous devez créer un compte. Ne vous inquiétez pas, les 5 000 premiers appels API sont gratuits et vous n’avez pas besoin de partager de données personnelles, comme vos informations de carte de crédit. Une fois votre compte créé et votre adresse e-mail validée, nous pouvons passer à l’étape suivante.

Clé API

Three-step onboarding graphic showing API access key, API Playground, and integration into your application

Pour utiliser WebScrapingAPI, vous devrez vous authentifier à l'aide de la clé API privée, que vous trouverez sur le tableau de bord de votre compte. Notez que vous ne devez partager cette clé avec personne, et si vous soupçonnez qu'elle a été compromise, vous pouvez toujours la réinitialiser en cliquant sur le bouton « Réinitialiser la clé API ».

Modifier le code

Parfait ! Maintenant que vous disposez de la clé API, apportons les modifications nécessaires.

Nous n'utiliserons plus de WebDriver. À la place, la bibliothèque « requests » enverra la requête à WebScrapingAPI et récupérera le code HTML du site web en réponse.

import requests
from bs4 import BeautifulSoup
import pandas as pd

Ensuite, nous devons préparer quelques paramètres pour la requête : l'URL du site web dont nous souhaitons extraire les données (realtor) et notre clé API.

url = "https://api.webscrapingapi.com/v1"
params = {
 "api_key": "XXXXXXX",
 "url": "https://www.realtor.com/realestateandhomes-search/New-York_NY"
}
response = requests.request("GET", url, params=params)

N'oubliez pas de modifier le contenu que BeautifulSoup analyse. Au lieu de la source provenant du ChromeDriver, nous utiliserons la réponse reçue de l'API.

content = response.text

À partir de là, vous pouvez utiliser le même code que dans le scénario précédent. Les données seront toujours stockées dans un fichier CSV nommé « listings.csv ».

C&#x27;est tout !

Et c'est à peu près tout ; vous pouvez exécuter le code. WebScrapingAPI se chargera du travail, et vous obtiendrez les données nécessaires pour trouver la maison idéale. Mais vous vous demandez peut-être : « Quelle est la différence entre utiliser WebScrapingAPI et le scraper que nous avons construit nous-mêmes ? ». Eh bien, permettez-moi de vous expliquer.

Fait maison ou prêt à l&#x27;emploi

L'un des principaux avantages de WebScrapingAPI réside dans ses proxys. Le service dispose d'un immense pool de proxys rotatifs qui garantit l'anonymat de ses utilisateurs lorsqu'ils naviguent sur le Web.

Cette fonctionnalité est également utile lorsque l'on souhaite extraire des données d'un site web en masse. Envoyer plusieurs requêtes sur un site web en peu de temps bloquera certainement votre adresse IP, le site pensant qu'il s'agit d'une tentative de harcèlement ou d'un bot malveillant.

L'utilisation d'un pool de proxys rotatifs fera croire au site web que plusieurs utilisateurs interagissent avec lui, ce qui vous permettra de rester indétectable et de scraper toute la journée.

De nombreux autres obstacles peuvent se présenter lors du scraping du Web, tels que les CAPTCHA ou l'empreinte digitale du navigateur. Comme vous pouvez vous y attendre, nous avons conçu WebScrapingAPI pour contourner tous ces obstacles et vous faciliter au maximum l'extraction de données. Si vous souhaitez en savoir plus sur ce sujet, consultez notre article sur les problèmes les plus courants rencontrés par les scrapers Web.

Un outil, de nombreux cas d&#x27;utilisation

Nous sommes tous d'accord pour dire que le scraping du Web est une excellente solution pour le secteur immobilier, mais vous pouvez également l'utiliser à d'autres fins. Voici quelques exemples : surveiller vos concurrents, comparer les prix des produits et entraîner des algorithmes d'apprentissage automatique.

Je pourrais continuer, mais cela relève déjà d'un tout autre sujet. Je ne vais pas étirer cet article à l'infini, je vous recommande donc de consulter ces sept cas d'utilisation des outils de web scraping.

Créer un outil de web scraping pendant son temps libre peut sembler une bonne idée, mais il y a de nombreux aspects à prendre en compte, qui peuvent nécessiter un temps de développement considérable. Vous trouverez ici une analyse approfondie comparant les outils de web scraping DIY aux outils prêts à l'emploi.

S'il s'agit de scraper quelques pages web, créer l'outil soi-même peut être une solution rapide. Cependant, un travail professionnel nécessite un outil professionnel, idéalement une API, WebScrapingAPI. Ai-je mentionné l'essai gratuit ?

À propos de l'auteur
Robert Munceanu, Développeur full-stack @ WebScrapingAPI
Robert MunceanuDéveloppeur full-stack

Robert Munceanu est développeur Full Stack chez WebScrapingAPI ; il participe à l'ensemble du produit et contribue à la création d'outils et de fonctionnalités fiables qui soutiennent la plateforme.

Commencez à créer

Prêt à faire évoluer votre système de collecte de données ?

Rejoignez plus de 2 000 entreprises qui utilisent WebScrapingAPI pour extraire des données Web à l'échelle de l'entreprise, sans aucun coût d'infrastructure.