En bref : ce guide vous explique pas à pas comment extraire des données du site Booking.com en Python : récupération des résultats de recherche, des pages d'hôtels, des tarifs à la nuitée et des avis clients. Vous disposerez de deux méthodes complémentaires : un workflow Selenium Wire pour les pages rendues en JavaScript et une approche plus rapide qui appelle directement l' /dml/graphql , ainsi qu'un guide anti-blocage, la gestion des devises et une solution de contournement pour la limite de pagination d'environ 1 000 résultats.Booking.com est le type de source de données vers laquelle les équipes du secteur du voyage et de l'hôtellerie reviennent sans cesse : tarifs à la nuit en temps réel, positionnement des concurrents, offre par quartier, avis des clients par établissement. Le hic, c'est qu'aucune de ces données n'est accessible via une API ouverte au grand public ; si vous souhaitez les obtenir par programmation, vous finirez donc par devoir effectuer vous-même une forme de web scraping sur Booking.com. Ce tutoriel présente deux approches pratiques en Python et les relie aux problèmes de production qui posent généralement des difficultés dès la deuxième semaine.
Au moment de la rédaction de cet article, Booking.com est l’une des plus grandes plateformes d’hébergement sur le web, avec des millions d’établissements réservables, qu’il s’agisse d’hôtels, de complexes touristiques ou de séjours de courte durée. (Nous donnerons des chiffres approximatifs concernant le nombre d’annonces ; les chiffres publics de l’entreprise varient.) La plateforme repose largement sur JavaScript et intègre de véritables défenses anti-bot, de sorte que les requests.get ont tendance à échouer avant même d’être utiles.
Vous verrez comment exécuter un scraper basé sur Selenium pour les résultats de recherche, comment extraire les mêmes données de l’endpoint GraphQL interne par rétro-ingénierie, comment récupérer les pages de détails des hôtels, les prix et les avis, et comment dépasser la limite de résultats grâce aux sitemaps et au partitionnement des requêtes. Le code est en Python 3.10+ et suppose que vous maîtrisez DevTools et les sélecteurs CSS.




