Passer au contenu

Comment récupérer les données de Zillow : un guide étape par étape pour les professionnels de l'immobilier

En tant que l'un des sites immobiliers les plus populaires avec plus de 200 millions de visites mensuelles, Zillow offre un trésor de données aux professionnels du secteur. En récupérant et en analysant toutes ces données, vous pouvez découvrir de puissantes informations sur le marché pour dynamiser votre entreprise.

Mais par où commencer ? N'ayez crainte – dans ce guide, je partagerai les techniques exactes que j'ai perfectionnées pendant plus de 10 ans dans l'extraction de données Web pour créer un scraper Zillow évolutif à partir de zéro.

Pourquoi Zillow Data est une mine d'or

Parlons d'abord de why Les investisseurs et agents avisés égratignent Zillow en premier lieu :

  • Détecter les opportunités : Analysez les données sur les prix et la demande pour identifier les domaines émergents ou sous-évalués.
  • Enrichissez votre base de données : Complétez vos dossiers clients avec des détails sur la propriété tels que les lits, les bains et les valeurs fiscales.
  • Surveillez la concurrence : Gardez un œil sur les nouvelles inscriptions d’autres agents entrant sur le marché.
  • Confirmer l'état de la propriété : Des recherches ont récemment vendu des maisons pour vérifier les affirmations des propriétaires actuels.
  • Découvrez les tendances du marché : Repérez une augmentation de la demande de propriétés à proximité de nouveaux développements commerciaux.

Avec plus de 9 milliards de visites et plus de 50 millions d'utilisateurs mensuels actifs, Zillow offre une profondeur et une étendue inégalées de données immobilières.

Défis à surmonter

Bien entendu, exploiter toutes ces données n’est pas toujours simple. Voici quelques obstacles courants auxquels vous pourriez être confronté :

  • Détection de robots : Zillow bloque les scrapers avec captcha, filtres IP et autres défenses.
  • Rendu JavaScript : Les détails clés sont chargés dynamiquement via JS.
  • Modifications fréquentes de la disposition : Les mises à jour cassent constamment les scrapers.
  • Limitation de débit : Blocs agressifs sur les requêtes par minute.

Mais ne vous inquiétez pas, je partagerai des méthodes éprouvées pour résoudre chaque problème. Avec la bonne approche, vous pouvez extraire de manière fiable des milliers d’enregistrements par jour de Zillow.

Étape 1 : configurer un environnement Python Web Scraping

Pour ce projet, nous utiliserons Python – le langage idéal pour le web scraping et l’analyse de données.

Tout d’abord, installez Python 3.6 ou supérieur si vous ne l’avez pas déjà. Je recommande de créer un environnement virtuel pour isoler les dépendances :

python3 -m venv zillowscraping

Activez l'environnement, puis installez les packages dont nous avons besoin :

pip install requests beautifulsoup4 pandas matplotlib selenium webdriver-manager

Cela nous donne des outils pour envoyer des requêtes, analyser du HTML, analyser des données, automatiser les navigateurs, etc.

Maintenant, le plaisir peut vraiment commencer !

Étape 2 : Inspecter les pages cibles

Ensuite, nous analyserons manuellement les pages que nous souhaitons supprimer à l'aide des outils de développement du navigateur :

Outils de développement de navigateur

Sur une page de résultats de recherche, le code HTML ressemble à :

<div class="property-card">
  <div class="details">
    <div class="price">$299,000</div> 
    <div class="address">
      <a href="/fr/1234-maple-st">1234 Maple St</a>
    </div>
    <div class="specs">
      3 bd | 2 ba | 1,420 sqft
    </div>
  </div>
</div>

Nous pouvons voir des éléments clairs concernant le prix, l’adresse, les lits, les bains et la superficie en pieds carrés. Bon!

Vérifions maintenant une page d'annonce individuelle :

<script>window.dataLayer = [{"property":"1234 Maple St"}];</script>

<div id="price"></div>

<script src="getDetails.js"></script>

Hmm… les détails sont chargés dynamiquement via JavaScript. Pas de problème – nous pouvons utiliser Selenium pour restituer les pages et extraire les données souhaitées.

Étape 3 : gratter la page des résultats de recherche

Armés de notre exploration, grattons ces résultats de recherche.

Nous allons d'abord demander la page HTML :

import requests

url = "https://zillow.com/my-search-results/"
headers = {"User-Agent": "Mozilla..."} 

response = requests.get(url, headers=headers)
html = response.text

Ensuite, nous pouvons analyser avec Beautiful Soup :

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")

Extrayez maintenant les données :

cards = soup.find_all("div", class_="property-card")

for card in cards:
  price = card.find("div", class_="price").text
  address = card.find("a").text
  beds, baths, sqft = card.find("div", class_="specs").text.split("|")

  print({
    "price": price, 
    "address": address,
    ...
  })

Pour gérer la pagination, nous pouvons rechercher un lien « Suivant » et répéter le processus jusqu'à ce qu'il ne reste plus de pages.

Étape 4 : Grattez la page de détails avec Selenium

Pour les pages de liste individuelles, nous utiliserons Sélénium pour automatiser un navigateur et afficher le JavaScript.

Installez le pilote Chrome :

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install()) 

Nous pouvons maintenant extraire les détails :

def get_listing_data(url):

  driver.get(url)

  price = driver.find_element_by_id("price").text
  address = driver.find_element_by_id("address").text
  ...

  return {
    "price": price,
    "address": address,
    ...
  }

Appelez cette fonction pour gratter chaque page au fur et à mesure que nous parcourons les URL des résultats de recherche.

Étape 5 : Évitez les blocages avec les proxys et les agents utilisateurs

Pour éviter les défenses de Zillow, il est essentiel d'acheminer les requêtes via proxies et faites régulièrement une rotation agents utilisateurs:

from random import choice 

proxies = ["192.168.1.1:8080", "192.168.1.2:8080"...]
user_agents = ["UA1", "UA2"...]

proxy = choice(proxies)
headers = {"User-Agent": choice(user_agents)}

response = requests.get(url, proxies={"http": proxy, "https": proxy}, headers=headers)

Cela permet de répartir les requêtes sur de nombreuses adresses IP différentes et d'imiter les utilisateurs réels.

Je recommande de vous associer à des services proxy tels que BrightData, SmartProxy ou Microleaves pour accéder à des millions d'adresses IP résidentielles, parfaites pour contourner les blocages.

Étape 6 : implémenter la limitation et les tentatives

Pour éviter d'atteindre les limites de débit, nous devons limiter les requêtes en ajoutant des délais aléatoires :

from time import sleep
from random import randint

# Make request
sleep(randint(1, 5)) # Random delay

Et utilisez les blocs try/sauf pour réessayer sur les erreurs :

from requests.exceptions import RequestException

try:
  response = requests.get(url)
except RequestException as e:
  # Retry with exponential backoff
  sleep(2**num_retries)  
  response = requests.get(url) 

Cela crée un grattoir résilient capable de résoudre des problèmes intermittents.

Étape 7 : stocker les données récupérées

Une fois récupérées, nous devons stocker les données. Pour les petits projets, les fichiers CSV peuvent suffire :

import csv

with open("zillow.csv", "w") as f:
  writer = csv.writer(f)
  writer.writerow(["Address", "Price", "Beds", "Baths" ...])
  for listing in listings:
    writer.writerow(listing)  

Pour des ensembles de données plus volumineux, chargez-les dans une base de données SQL ou un magasin NoSQL comme MongoDB. Cela permet de créer des tableaux de bord et des cartes interactifs pour découvrir des informations !

Commençons à gratter !

Et voilà – un processus éprouvé pour récupérer les données immobilières de Zillow. Vous pouvez désormais exploiter sa richesse d’annonces pour faire passer votre entreprise au niveau supérieur.

Lorsque vous commencez à gratter, n'hésitez pas à nous contacter si vous avez d'autres questions ! Je suis toujours heureux d'aider mes collègues professionnels de l'immobilier à utiliser les données plus efficacement.

Faites-le-moi savoir une fois que vous aurez commencé à extraire des milliers de nouvelles annonces Zillow chaque jour !

Mots clés:

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *