Comment récupérer les données des annonces AirBnB
Robert Sfichi le 26 mai 2021

Vous êtes-vous déjà trouvé dans la situation d'essayer de découvrir l'endroit idéal pour passer les vacances ? Ou peut-être souhaitez-vous simplement savoir comment votre annonce se situe par rapport à celle de vos voisins. Dans tous les cas, pourquoi ne pas utiliser la puissance du web scraping pour y parvenir ?
Un scraper web est un logiciel qui vous aide à automatiser le processus fastidieux de collecte de données utiles à partir de sites web tiers. La plupart des services en ligne offrent aux développeurs l'accès à une API afin de lire facilement les informations de leur site web. Malheureusement, Airbnb n'en fait pas partie. C'est là que les scrappeurs web entrent en jeu.
Pourquoi quelqu'un voudrait-il récupérer les données d'Airbnb ?
Airbnb est une plateforme qui donne aux gens la possibilité de louer leurs propriétés en utilisant simplement une connexion internet. Fondée en 2008 par Brian Chesky, Nathan Blecharczyk et Joe Gebbia, elle a connu un succès fulgurant, même pendant la pandémie.
Tout le monde peut trouver les annonces sur la plateforme en accédant à Airbnb et en recherchant un lieu, mais il n'y a pas de moyen facile de trouver un ensemble de données significatif avec les informations suivantes :
- Combien de listes y a-t-il dans une ville ?
- Quel est leur prix ?
- À quoi ressemblent-ils ?
- Comment sont-ils évalués ?
Bien sûr, vous avez vos propres raisons de vouloir obtenir ces informations et je suis sûr que nous pouvons vous aider.
C'est parti !
Extraction de données à l'aide d'une API de scraping web
Pour pouvoir extraire toutes les données nécessaires, veillez à suivre les étapes suivantes.
1. Inspection du code source
Vérifiez les éléments que vous souhaitez extraire du site web d'Airbnb. En cliquant avec le bouton droit de la souris n'importe où sur la page et en sélectionnant l'option "Inspecter", vous accéderez aux outils de développement.
Supposons que nous voulions obtenir le prix, l'image, le type et l'évaluation des lieux que nous allons chercher.
Tout d'abord, nous allons trouver l'élément commun dans le DOM. Il semble que _gigle7 soit ce que nous recherchons.

2. Choisir un scraper web
Pour obtenir les meilleurs résultats, nous vous recommandons d'utiliser notre service, WebScrapingAPI, sur lequel nous baserons notre tutoriel. Vous pouvez l'essayer gratuitement en accédant à ce lien. Créez un compte et revenez sur cette page lorsque vous aurez terminé.
Après vous être connecté, rendez-vous sur la page du tableau de bord. Vous y trouverez votre clé d'accès privée à l'API, que nous utiliserons pour effectuer les demandes, le terrain de jeu de l'API où vous pourrez tester notre produit, ainsi que la documentation.

3. Mise en place du projet
Après avoir créé un dossier pour le projet, exécutez les commandes suivantes :
npm init -y
npm install got jsdom
Pour effectuer les requêtes, nous allons installer le module got, et pour nos besoins d'analyse HTML, nous utiliserons le paquet jsdom.
Créez un nouveau fichier appelé "index.js" et ouvrez-le.
4. Présentation de la demande
Définissons les paramètres, effectuons la requête et analysons le code HTML. Écrivez les lignes suivantes dans le fichier créé précédemment :
const {JSDOM} = require("jsdom")
const got = require("got")
(async () => {
const params = {
api_key: "YOUR_API_KEY",
url: "https://www.airbnb.com/s/Berlin/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_dates%5B%5D=april&flexible_trip_dates%5B%5D=may&flexible_trip_lengths%5B%5D=weekend_trip&date_picker_type=calendar&source=structured_search_input_header&search_type=filter_change&place_id=ChIJAVkDPzdOqEcRcDteW0YgIQQ&checkin=2021-04-01&checkout=2021-04-08"
}
const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})
const {document} = new JSDOM(response.body).window
const places = document.querySelectorAll('._gig1e7')
})()
Comme nous l'avons indiqué précédemment, toutes les informations pertinentes se trouvent sous l'élément _gigle7, nous allons donc récupérer tous les éléments qui sont assignés à la classe _gigle7. Vous pouvez vous connecter à l'écran en ajoutant une action console.log() juste après la ligne où nous définissons constamment les lieux.
console.log(places)
5. Récupérer les données au format JSON
À partir de là, nous allons creuser davantage pour obtenir les éléments spécifiques contenant le prix, le type d'image et les informations relatives à l'évaluation.
Après les lignes de code présentées précédemment, copiez ce qui suit :
const results = []
places.forEach(place => {
if (place) {
const price = place.querySelector('._ls0e43')
if (price) place.price = price.querySelector('._krjbj').innerHTML
const image = place.querySelector('._91slf2a')
if (image) place.image = image.src
const type = place.querySelector('._b14dlit')
if (type) place.type = type.innerHTML
const rating = place.querySelector('._10fy1f8')
if (rating) place.rating = rating.innerHTML
results.push(place)
}.
})
console.log(results)
Comme vous pouvez le voir, pour chaque annonce figurant sur la première page, nous récupérons l'étiquette de prix, l'emplacement de la source de l'image, le type de l'annonce et l'évaluation. Au final, nous aurons un tableau d'objets, et chacun d'entre eux contiendra tous les éléments de cette liste.
Maintenant que nous avons écrit tout le code nécessaire pour récupérer les informations d'Airbnb, le fichier index.js devrait ressembler à ceci :
const {JSDOM} = require("jsdom");
const got = require("got");
(async () => {
const params = {
api_key: "YOUR_API_KEY",
url: "https://www.airbnb.com/s/Berlin/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_dates%5B%5D=april&flexible_trip_dates%5B%5D=may&flexible_trip_lengths%5B%5D=weekend_trip&date_picker_type=calendar&source=structured_search_input_header&search_type=filter_change&place_id=ChIJAVkDPzdOqEcRcDteW0YgIQQ&checkin=2021-04-01&checkout=2021-04-08"
}
const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})
const {document} = new JSDOM(response.body).window
const places = document.querySelectorAll('._gig1e7')
const results = []
places.forEach(place => {
if (place) {
const price = place.querySelector('._ls0e43')
if (price) place.price = price.querySelector('._krjbj').innerHTML
const image = place.querySelector('._91slf2a')
if (image) place.image = image.src
const type = place.querySelector('._b14dlit')
if (type) place.type = type.innerHTML
const rating = place.querySelector('._10fy1f8')
if (rating) place.rating = rating.innerHTML
results.push(place)
}
})
console.log(results)
})()
Comme vous pouvez le constater, il est assez simple de récupérer les données d'Airbnb à l'aide de WebScrapingAPI.
- Faites une demande à WebScrapingAPI en utilisant les paramètres nécessaires : la clé API et l'URL à partir de laquelle nous devons extraire des données.
- Chargez le DOM à l'aide de JSDOM.
- Sélectionnez toutes les listes en recherchant la classe spécifique.
- Pour chaque annonce, obtenez le prix, l'image, le type d'annonce et l'évaluation.
- Ajouter chaque place à un nouveau tableau appelé résultats.
- Enregistrer à l'écran le tableau de résultats nouvellement créé.
La réponse devrait ressembler à ceci :
[
HTMLDivElement {
price: '$47 per night, originally $67',
image: 'https://a0.muscache.com/im/pictures/miso/Hosting-46812239/original/c56d6bb5-3c2f-4374-ac01-ca84a50d31cc.jpeg?im_w=720',
type: 'Room in serviced apartment in Friedrichshain',
rating: '4.73'
},
HTMLDivElement {
price: '$82 per night, originally $109',
image: 'https://a0.muscache.com/im/pictures/miso/Hosting-45475252/original/f6bd7cc6-f72a-43ef-943e-deba27f8253d.jpeg?im_w=720',
type: 'Entire serviced apartment in Mitte',
rating: '4.80'
},
HTMLDivElement {
price: '$97 per night, originally $113',
image: 'https://a0.muscache.com/im/pictures/92966859/7deb381e_original.jpg?im_w=720',
type: 'Entire apartment in Mitte',
rating: '4.92'
},
HTMLDivElement {
price: '$99 per night, originally $131',
image: 'https://a0.muscache.com/im/pictures/f1b953ca-5e8a-4fcd-a224-231e6a92e643.jpg?im_w=720',
type: 'Entire apartment in Prenzlauer Berg',
rating: '4.90'
},
HTMLDivElement {
price: '$56 per night, originally $61',
image: 'https://a0.muscache.com/im/pictures/bb0813a6-e9fe-4f0a-81a8-161440085317.jpg?im_w=720',
type: 'Entire apartment in Tiergarten',
rating: '4.67'
},
...
]
L'une des limitations auxquelles nous sommes actuellement confrontés est que nous ne récupérons les informations que d'une seule page de notre recherche. Ce problème peut être résolu en utilisant un navigateur sans tête, comme Puppeteer, ou un outil d'automatisation de navigateur comme Selenium. Cela nous aidera à faire la plupart des choses que nous pouvons faire manuellement dans un navigateur web, comme remplir un formulaire ou cliquer sur un bouton.
Nous vous encourageons à consulter notre Ultimate Guide to Web Scraping with JavaScript and Node.Js si vous souhaitez en savoir plus sur ces technologies.
La puissance du web scraping
Comme vous pouvez le constater, nous avons réussi à construire un scraper web de base en quelques minutes seulement. À partir de là, votre imagination est la limite. Si vous êtes suffisamment ambitieux, vous pouvez même utiliser les données recueillies pour visualiser la distribution et la concentration des propriétés sur une carte. Airbnb vous fournit toutes les informations nécessaires en tête de chaque page d'annonce.
Comme vous pouvez le constater, le web scraping peut être l'une des façons les plus amusantes de passer votre temps en tant que développeur de logiciels. Vous pouvez facilement récupérer toutes les données dont vous avez besoin pour créer une nouvelle application pour une niche spécifique ou simplement pour améliorer vos compétences. Si vous avez des problèmes avec le processus, n'hésitez pas à demander de l'aide dans la section des commentaires et nous serons heureux de vous aider !
Si cet article ne vous a pas permis de comprendre pleinement les possibilités du web scraping, vous pouvez consulter un autre exemple de la manière dont les entreprises peuvent construire un web scraper, étape par étape.
Merci pour votre temps ! Bon scraping !
Nouvelles et mises à jour
Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Articles connexes

Explorez le pouvoir de transformation du web scraping dans le secteur financier. Des données sur les produits à l'analyse des sentiments, ce guide donne un aperçu des différents types de données web disponibles pour les décisions d'investissement.


Plongez dans le rôle transformateur des données financières dans la prise de décision des entreprises. Comprendre les données financières traditionnelles et l'importance émergente des données alternatives.


Bonjour, Si vous souhaitez apprendre le Web Scraping en 2023 et que vous cherchez les meilleurs cours en ligne à suivre, vous êtes au bon endroit.
