Agoda propose des millions d'annonces d'hôtels et de propriétés. Que vous effectuiez des recherches, créiez un agrégateur de voyages ou analysiez les tarifs hôteliers, la collecte et l'analyse des données et informations tarifaires sont essentielles pour les études de marché et l'analyse concurrentielle. L'extraction de données Agoda peut s'avérer très utile pour votre projet.

Dans ce guide, nous vous montrerons comment récupérer les données de l'hôtel depuis Agoda en utilisant Python et le Crawlbase Crawling APIVous apprendrez à extraire les noms, les prix, les avis et les notes des hôtels, ainsi qu'à extraire des données détaillées pour obtenir des informations complètes, tout en naviguant dans la pagination par défilement d'Agoda. Nous aborderons également la configuration de votre environnement Python et le stockage des données extraites dans un format structuré comme JSON, en soulignant l'extraction et la collecte de données comme étapes clés du processus.

Vous disposerez d'un scraper Web Agoda qui peut récupérer du contenu dynamique et récupérer les fiches d'hôtels. En plus d'aborder des sujets intermédiaires comme la pagination et l'utilisation d'une API pour faciliter le scraping, ce guide est conçu pour les débutants.
Prêt à commencer ? Voici un guide étape par étape et une vidéo détaillée expliquant comment récupérer les données d'un hôtel sur Agoda :

Table des Matières

  1. Pourquoi extraire les données des hôtels d'Agoda ?
  2. Données clés à extraire d'Agoda
  3. Crawlbase Crawling API pour supprimer les listes d'hôtels sur Agoda
  • Installation du Crawlbase Bibliothèque Python
  1. Configuration de votre environnement Python
  • Installation de Python et bibliothèques requises
  • IDE pour le scraping Web
  1. Suppression des annonces immobilières Agoda
  • Inspection du code HTML pour identifier les sélecteurs
  • Rédaction du scraper de listes de recherche Agoda
  • Gestion de la pagination par défilement
  • Stockage des données récupérées dans un fichier JSON
  • Exemple de code Python complet
  1. Réflexions finales
  2. Foire Aux Questions (FAQ)

Pourquoi extraire les données des hôtels d'Agoda ?

Agoda est un site de réservation de voyages en ligne populaire, auquel des millions d'utilisateurs dans le monde entier font confiance pour trouver les meilleures offres d'hôtels. Avec des millions d'hébergements dans sa base de données, Agoda est une mine d'informations pour les entreprises, les chercheurs et les développeurs. L'extraction des données hôtelières Agoda permet d'obtenir des informations difficiles à obtenir manuellement. L'extraction des données hôtelières fournit également une veille concurrentielle et facilite l'analyse de marché dans le secteur de l'hôtellerie.

Voici quelques raisons pour lesquelles l’extraction des données des hôtels Agoda est utile :

1. Étude de marché

Le scraping Agoda vous permet d'analyser les prix, les tendances et les disponibilités des hôtels. Grâce aux données récupérées, vous pouvez comparer les prix de différents hôtels pour les agences de voyages, les hôteliers et la concurrence, afin d'optimiser vos tarifs et de trouver des opportunités. De plus, le scraping vous permet de suivre les prix au fil du temps et de mieux comprendre les préférences des clients.

2. Créer un agrégateur de voyages

Les données d'Agoda fournissent les prix, les notes, les avis et la disponibilité des hôtels en temps réel, y compris les types de chambres, le type de chambre et d'autres détails de l'hôtel tels que les équipements et les caractéristiques de la propriété, pour les utilisateurs, pour les sites de comparaison de voyages ou les applications.

Les agrégateurs peuvent également fournir des données pour plusieurs emplacements, aidant les utilisateurs à comparer les options entre différentes régions et villes.

3. Analyse de la concurrence

Les hôtels peuvent utiliser les données d'Agoda pour suivre prix des concurrents, promotions et avis, ainsi qu'analyser les notes des hôtels, les données d'évaluation et les taux d'occupation pour évaluer les performances et améliorer les prix et les services.

4. Recommandations personnalisées

L'extraction des données hôtelières d'Agoda permet aux développeurs de créer des recommandations de voyage personnalisées en fonction des équipements, des notes et de l'emplacement.

5. Recherche académique

Les chercheurs peuvent utiliser les données d'Agoda pour des études sur les tendances du tourisme, le comportement des utilisateurs et l'hôtellerie, en exploitant les données publiques et en garantissant une couverture complète des projets et rapports universitaires.

Données clés à extraire d'Agoda

Lorsque vous récupérez des données hôtelières à partir d'Agoda, concentrez-vous sur les points de données les plus précieux pour tirer le meilleur parti de vos efforts. Voici les principaux points de données à extraire :

Image des points de données clés à extraire d'Agoda
  1. Nom de l'hôtel – Le nom de l’hôtel permet d’identifier les établissements.
  2. Prix ​​par nuit – Le coût d’une seule nuitée.
  3. Prix ​​total – Le prix total du séjour, taxes comprises.
  4. Évaluation de l'hôtel – Notes des clients pour évaluer la qualité du bien.
  5. Nombre de reviews – Indique la popularité et la fiabilité de l’hôtel.
  6. Lieu – Ville ou quartier où se trouve l’hôtel.
  7. Equipements – Des fonctionnalités telles que le Wi-Fi, la piscine, la salle de sport, etc., que propose l’hôtel.
  8. Type de propriété – Type d’hébergement, tel qu’un hôtel, un complexe hôtelier ou un appartement.
  9. Disponibilité de chambres – Informations sur les chambres disponibles à des dates spécifiques.
  10. Photos de l'hôtel – Les visuels de la propriété sont utiles pour présenter les annonces.

Crawlbase Crawling API pour supprimer les listes d'hôtels sur Agoda

Crawlbase Crawling API est l'outil idéal pour scraper Agoda, qui propose un contenu dynamique qui se charge au fur et à mesure que vous faites défiler l'écran. Il gère les pages rendues par JavaScript et contourne les mesures de sécurité telles que les blocages IP, de sorte que le scraping est efficace et fluide.

Voici pourquoi Crawlbase est adapté au grattage Agoda :

  • Gère le contenu dynamique: Crawlbase simule le défilement humain afin que toutes les listes d'hôtels soient capturées au fur et à mesure que la page charge davantage de données.
  • Rotation IP: Fait tourner les adresses IP pour éviter les limites de débit et les blocages d'Agoda.
  • Rapide et fiable:Récupérez rapidement beaucoup de données.
  • Requêtes personnalisables: Ajustez les en-têtes, les cookies et les paramètres de demande selon vos besoins.

Crawlbase Bibliothèque Python

Le Crawlbase La bibliothèque Python simplifie l'utilisation de l'API. Pour commencer, vous aurez besoin de votre Crawlbase jeton d'accès, que vous pouvez obtenir en signer pour leur service.

Voici un exemple de code pour récupérer des données depuis Agoda en utilisant Crawlbase:

1
2
3
4
5
6
7
8
9
10
11
12
13
à partir de base d'exploration importer API d'exploration

# Initialiser Crawlbase API avec votre jeton d'accès
crawling_api = API d'exploration({ 'jeton': 'VOTRE_JETON_CRAWLBASE' })

def créer_une_requête_crawlbase(url):
réponse = crawling_api.get(url)

if réponse['en-têtes']['pc_status']== «200 ':
retourner réponse['corps'].décoder(« utf-8 »)
d'autre:
impression(f"Échec de la récupération de la page. Code d'état : {réponse['en-têtes']['pc_status']}")
retourner Aucun

Note: Un jeton JS de Crawlbase est nécessaire pour récupérer le contenu JavaScript. Crawlbase offre 1,000 XNUMX demandes gratuites pour ses Crawling API. Voir l' Documentation pour en savoir plus. Ensuite, nous allons configurer votre environnement Python pour le scraping Agoda !

Dans la section suivante, nous allons configurer votre environnement Python pour le scraping Agoda !

Configuration de votre environnement Python

L'installation des bibliothèques et la configuration de votre environnement sont des conditions préalables pour commencer le scraping Agoda. Suivez les étapes ci-dessous pour terminer la configuration.

Installation de Python et bibliothèques requises

Assurez-vous que Python est installé sur votre ordinateur. Sinon, téléchargez et installez la dernière version à partir du site officiel Python.

Après avoir installé Python, nous devons installer quelques bibliothèques requises :

  1. Crawlbase Bibliothèque Python: Pour interagir avec le Crawlbase Crawling API.
  2. BeautifulSoup:Pour analyser le HTML et extraire des données.

Vous pouvez installer ces bibliothèques en utilisant pip :

1
pip installe crawlbase beautifulsoup4

IDE pour le scraping Web

Un environnement de développement intégré (IDE) facilitera le codage et l'exécution de votre scraper. Les choix les plus courants pour Python sont :

  • Code VS:Un éditeur léger avec de nombreuses extensions Python.
  • PyCharm:Un IDE à part entière pour Python.
  • Jupyter Notebook:Pour le codage interactif.

Choisissez celui qui vous convient et vous êtes prêt à partir !

Suppression des annonces immobilières Agoda

Dans cette section, nous allons parcourir les annonces de propriétés Agoda pour la ville « Kuala Lumpur ». L'URL de recherche est :

URL de recherche Agoda pour Kuala Lumpur

Nous allons suivre les étapes suivantes pour extraire efficacement les annonces :

Inspection du code HTML pour identifier les sélecteurs

Avant de commencer le scraping, nous devons comprendre la structure HTML de la page de résultats de recherche d'Agoda afin de pouvoir déterminer les sélecteurs pour les données d'hôtel que nous souhaitons extraire.

  1. Ouvrir l'URL d'Agoda:Accédez à la page de résultats de recherche Agoda pour Kuala Lumpur.
  2. Inspecter la page: Faites un clic droit sur la page et choisissez « Inspecter » ou appuyez sur Ctrl + Shift + I pour ouvrir les outils de développement.
Inspection d'image de la structure HTML de la propriété Agoda
  1. Identifier les éléments clés:Dans la structure HTML de la page, recherchez les éléments qui contiennent les détails de l'hôtel. Nous nous concentrerons sur :
  • Nom de l'hôtel:Dans un <h3> élément avec data-selenium="hotel-name".
  • Tarif: Dans un <div> élément avec data-element-name="final-price".
  • Note: Dans un <p> élément avec data-element-name="review-score".
  • Lien vers l'hôtel: Dans un <a> tag avec classe PropertyCard__Link qui renvoie vers la page de l'hôtel.

Rédaction du scraper de listes de recherche Agoda

Pour extraire les données d'Agoda, nous utiliserons Crawlbase Crawling API Pour gérer le contenu dynamique et afficher la page comme dans un navigateur réel. Cela garantit la capture de toutes les annonces d'hôtels, même celles chargées par JavaScript. Lors de l'extraction des données hôtelières, il est important de collecter des données tarifaires détaillées pour chaque annonce, telles que les prix des différents types de chambres et options. De plus, vous devez déterminer le nombre total d'hôtels trouvés dans les résultats de recherche afin de quantifier la disponibilité.

Voici comment nous pouvons écrire le scraper :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
à partir de base d'exploration importer API d'exploration
à partir de bs4 importer BeautifulSoup
importer json

# Initialiser Crawlbase API avec votre jeton
crawling_api = API d'exploration({'jeton': 'VOTRE_JETON_CRAWLBASE'})

# Fonction permettant de récupérer la page de résultats de recherche Agoda
def récupérer_page_agoda(url):
réponse = crawling_api.get(url)
if réponse['en-têtes']['pc_status']== «200 ':
retourner réponse['corps'].décoder(« utf-8 »)
d'autre:
impression(« Erreur lors de la récupération de la page »)
retourner Aucun

# Fonction permettant d'extraire les données de l'hôtel à partir du contenu HTML
def extraire_des_données_agoda(contenu_html):
soupe = BeautifulSoup(contenu_html, 'html.parser')
hôtels = []

# Parcourez toutes les listes d'hôtels sur la page
pour l'hôtel in soupe.select('div#contentContainer ol.hotel-list-container > li.PropertyCard'):
nom = hôtel.select_one('h3[data-selenium="nom-de-l'hôtel"]').texte.strip() if hôtel.select_one('h3[data-selenium="nom-de-l'hôtel"]') d'autre ''
prix = hôtel.select_one('div[data-element-name="prix-final"]').texte.strip() if hôtel.select_one('div[data-element-name="prix-final"]') d'autre ''
note = hôtel.select_one('p[data-element-name="note-de-revue"]').texte.strip() if hôtel.select_one('p[data-element-name="note-de-revue"]') d'autre ''
lien = hotel.select_one('a.PropertyCard__Link')['href'] if hôtel.select_one('a.PropertyCard__Link') d'autre ''

hôtels.append({
'nom': nom,
'prix': prix,
'notation': notation,
'lien': f"https://www.agoda.com{lien}" # Complétez l'URL
})

retourner hôtels

Gestion de la pagination par défilement

Agoda utilise la pagination par défilement, ce qui permet d'afficher davantage d'offres d'hôtels à mesure que vous faites défiler la page. Nous pouvons vous conseiller. Crawlbase Crawling API pour simuler le défilement et capturer plus d'annonces.

Pour gérer le défilement, nous pouvons utiliser le scroll et scroll_interval options. Voici comment nous pouvons les définir :

1
2
3
4
5
6
choix = {
'rouleau': 'vrai',
'intervalle_de_défilement': «20 ' # Faites défiler pendant 20 secondes pour charger plus d'annonces
}

réponse = crawling_api.get(url, options)

Cela fera la Crawler faites défiler pendant 20 secondes, en vous assurant que toutes les listes d'hôtels sont chargées avant le scraping.

Stockage des données récupérées dans un fichier JSON

Une fois que nous avons les données, nous devons les enregistrer dans un format structuré comme JSON afin de pouvoir les analyser ou les traiter ultérieurement. Voici comment nous pouvons enregistrer les données d'hôtel extraites dans un fichier JSON :

1
2
3
4
def enregistrer_dans_json(données, nom de fichier='hotels_data.json'):
avec ouvert(nom de fichier, 'w') as f:
json.dump(données, f, indent=4)
impression(f"Données enregistrées dans {nom de fichier}")

Exemple de code Python complet

Maintenant que nous avons tous les composants en place, combinons le tout dans un exemple fonctionnel complet. Ce script récupérera les résultats de recherche Agoda pour Kuala Lumpur, extraira les informations sur les hôtels et les stockera dans un fichier JSON.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
à partir de base d'exploration importer API d'exploration
à partir de bs4 importer BeautifulSoup
importer json

# Initialiser Crawlbase API avec votre jeton
crawling_api = API d'exploration({'jeton': 'VOTRE_JETON_CRAWLBASE'})

# Fonction permettant de récupérer la page de résultats de recherche Agoda
def récupérer_page_agoda(url):
choix = {
'rouleau': 'vrai',
'intervalle_de_défilement': «20 '
}

réponse = crawling_api.get(url, options)
if réponse['en-têtes']['pc_status']== «200 ':
retourner réponse['corps'].décoder(« utf-8 »)
d'autre:
impression(« Erreur lors de la récupération de la page »)
retourner Aucun

# Fonction permettant d'extraire les données de l'hôtel à partir du contenu HTML
def extraire_des_données_agoda(contenu_html):
soupe = BeautifulSoup(contenu_html, 'html.parser')
hôtels = []

# Parcourez toutes les listes d'hôtels sur la page
pour l'hôtel in soupe.select('div#contentContainer ol.hotel-list-container > li.PropertyCard'):
nom = hôtel.select_one('h3[data-selenium="nom-de-l'hôtel"]').texte.strip() if hôtel.select_one('h3[data-selenium="nom-de-l'hôtel"]') d'autre ''
prix = hôtel.select_one('div[data-element-name="prix-final"]').texte.strip() if hôtel.select_one('div[data-element-name="prix-final"]') d'autre ''
note = hôtel.select_one('p[data-element-name="note-de-revue"]').texte.strip() if hôtel.select_one('p[data-element-name="note-de-revue"]') d'autre ''
lien = hotel.select_one('a.PropertyCard__Link')['href'] if hôtel.select_one('a.PropertyCard__Link') d'autre ''

hôtels.append({
'nom': nom,
'prix': prix,
'notation': notation,
'lien': f"https://www.agoda.com{lien}" # Complétez l'URL
})

retourner hôtels

# Fonction pour enregistrer les données dans un fichier JSON
def enregistrer_dans_json(données, nom de fichier='hotels_data.json'):
avec ouvert(nom de fichier, 'w') as f:
json.dump(données, f, indent=4)
impression(f"Données enregistrées dans {nom de fichier}")

# Script principal
if __nom__ == "__principale__":
URL = "https://www.agoda.com/search?city=14524&checkIn=2025-01-05&los=2&rooms=1&adults=2&checkOut=2025-01-09"
html_content = fetch_agoda_page(url)

if contenu_html :
hotels_data = extract_agoda_data(html_content) # Extraire des données à partir du contenu HTML
save_to_json(données_hôtels)

Exemple de sortie :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[
{
"prénom": « Suite Diamant KL au Mercu Summer Suite KLCC »,
"prix": « 28 USD »,
"notation": "7.7",
"lien": "https://www.agoda.com/axon-suite-klcc-by-home/hotel/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=17&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
{
"prénom": « Suites d'été KLCC par Castle Classy »,
"prix": « 34 USD »,
"notation": "8.4",
"lien": "https://www.agoda.com/summer-suites-klcc-by-castle-classy/hotel/all/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=3&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
{
"prénom": "Deface Platinum 2 Kuala Lumpur",
"prix": « 72 USD »,
"notation": "8.5",
"lien": "https://www.agoda.com/deface-victory-suites-kuala-lumpur/hotel/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=8,-1&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
{
"prénom": « Riveria City Kuala Lumpur par Guestonic »,
"prix": « 20 USD »,
"notation": "9.2",
"lien": "https://www.agoda.com/riveria-city-kuala-lumpur-by-guestonic/hotel/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=5&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
.... plus
]

Réflexions finales

Extraction de données hôtelières avec Python et Crawlbase permet aux entreprises d'obtenir des informations grâce à l'analyse concurrentielle, à la surveillance des prix et aux études de marché. Crawlbase Crawling API, vous pouvez extraire des données de sites Web dynamiques et gourmands en JavaScript comme Agoda sans rencontrer de problèmes courants tels que la pagination ou les retards de chargement du contenu.

Dans ce blog, nous avons abordé tous les aspects, de la recherche des éléments HTML clés sur la page de résultats de recherche d'Agoda à l'écriture et à l'exécution d'un scraper Python complet. Nous avons également montré comment gérer la pagination basée sur le défilement et stocker les données extraites dans un fichier JSON pour une analyse plus approfondie.

Si vous souhaitez apprendre à extraire des données d'autres sites Web immobiliers, consultez nos guides utiles ci-dessous.

(I.e. Comment récupérer Realtor.com
(I.e. Comment gratter Zillow
(I.e. Comment récupérer des crédits Airbnb
(I.e. Comment récupérer des données sur Booking.com
(I.e. Comment récupérer des données Expedia

Si vous avez des questions ou des commentaires, notre équipe de soutien est toujours disponible pour vous aider dans votre parcours de scraping Web. N'oubliez pas de suivre les directives éthiques et de respecter les conditions d'utilisation du site Web. Bon scraping !

Foire aux questions

Le scraping Web est une zone grise sur le plan juridique. Bien qu'il soit généralement acceptable de récupérer des données accessibles au public, vérifiez toujours les conditions de service d'Agoda pour vous assurer de leur conformité. Réalisez ce type de scraping de manière responsable et évitez d'utiliser les données à des fins non autorisées.

Q. Comment gérer les mesures CAPTCHA ou anti-bot sur Agoda ?

Agoda utilise des CAPTCHA et d'autres techniques de détection de robots. Vous pouvez contourner ces problèmes en utilisant le Crawlbase Crawling API, qui dispose de fonctionnalités telles que le rendu basé sur un navigateur et la rotation IP.

Q. Puis-je extraire des données de plusieurs villes à la fois ?

Oui, vous pouvez extraire des données pour plusieurs villes en modifiant les paramètres de requête dans l'URL d'Agoda. Par exemple, mettez à jour l' city paramètre avec l'ID de la ville souhaitée. Assurez-vous simplement de suivre les bonnes pratiques de scraping, comme la limitation de la fréquence des requêtes, pour éviter d'être bloqué.