84 votes

Comment un site comme kayak.com agrège-t-il du contenu ?

Salutations, J'ai eu l'idée d'un nouveau projet et je me demandais si quelqu'un avait une idée de la manière dont un service comme Kayak.com est capable d'agréger des données de tant de sources si rapidement et avec précision. Plus précisément, pensez-vous que Kayak.com interagit avec des API ou bien qu'ils parcourent/scrappent les sites web des compagnies aériennes et des hôtels afin de répondre aux demandes des utilisateurs ? Je sais qu'il n'y a pas de bonne réponse pour ce genre de choses mais je suis curieux de savoir ce que les autres pensent être une bonne façon de procéder. Si cela aide, faites semblant que vous allez créer kayak.com demain ... d'où proviennent vos données ?

147voto

Domchi Points 3550

Je travaille dans l'industrie du voyage en tant qu'architecte logiciel / chef de projet sur le type de projet que vous décrivez précisément - dans notre région, nous travaillons directement avec les fournisseurs, mais pour les départs, nous nous connectons à plusieurs agrégateurs.

Pour répondre à votre question... certaines données que vous avez, certaines que vous obtenez de différentes manières, et certaines que vous devez torturer et tordre jusqu'à ce qu'elles avouent.

Quel est votre angle?

Les questions que vous devez poser sont... Voulez-vous vendre de la publicité comme Kayak ou prendre une commission comme Expedia? Êtes-vous dans la recherche ou la vente de services de voyage? Ciblez-vous un créneau (par exemple, juste les voyages aériens) ou tout (hébergement, compagnies aériennes, location de voitures, services supplémentaires comme les transports/visites/conférences, etc.)? Ciblez-vous la région (États-Unis ou une partie des États-Unis) ou le monde entier? Jusqu'où allez-vous - affichez-vous simplement plusieurs sites sur un seul écran, ou regroupez-vous différents services ensemble et les emballez dynamiquement?

Obtention des données

Si vous optez pour le modèle économique de Kayak, vous n'avez pas techniquement besoin de l'autorisation du site... mais beaucoup de sites ont des programmes d'affiliation avec des IFrame ou d'autres moyens simples de diriger le client vers leur site. Du bon côté, vous n'avez pas à gérer les paiements/plaintes et les voyageurs eux-mêmes. En ce qui concerne les inconvénients... si vous voulez comparer les prix vous-même et présenter l'option la moins chère à l'utilisateur, vous devrez intégrer à un niveau plus profond, et cela signifie des API et du web scraping.

En ce qui concerne le web scraping... évitez-le. C'est nul. Vraiment. Ne le faites pas. Croyez-moi sur ce point. Par exemple, certaines choses comme les compagnies lowcost, vous ne pouvez pas les obtenir sans web scraping. Les compagnies aériennes low cost vivent des services à valeur ajoutée. Si l'utilisateur ne voit pas leur site web, ils ne vendent pas de produits supplémentaires, et ils ne gagnent rien. Par conséquent, ils n'ont pas d'affiliés, ils n'offrent pas d'API et ils changent constamment la présentation de leur site. Cependant, il y a des entreprises qui gagnent leur vie en grattant les sites des compagnies low cost et en les enveloppant dans de belles APIs. Si vous pouvez vous les permettre, vous pouvez offrir à vos utilisateurs une comparaison des vols à bas coûts et c'est énorme.

D'autre part, il y a des transporteurs "normaux" qui offrent des APIs. Ce n'est pas trop compliqué de s'adresser aux compagnies aériennes car elles sont toutes unies sous IATA; en gros, vous achetez chez IATA et IATA distribue l'argent aux transporteurs. Cependant, vous ne voulez probablement pas vous connecter directement au réseau des transporteurs. Ils ont des services web et du SOAP de nos jours, mais croyez-moi quand je dis qu'il existe des protocoles SOAP qui ne sont que des interfaces incroyablement minces autour d'un prompt texte à travers lequel vous pouvez interagir avec un mainframe avec un protocole des années 80 (pensez à un invité Unix où vous êtes facturé par commande; et il faut environ 20 commandes pour effectuer une seule recherche). C'est pourquoi vous voulez probablement vous connecter à quelqu'un un peu plus bas dans la hiérarchie alimentaire, avec une meilleure API.

Les compagnies aériennes sont donc aux deux extrêmes de la courbe de Gauss; d'un côté, il y a des fournisseurs individuels, et de l'autre des systèmes hautement centralisés où vous implémentez une API et pouvez voler n'importe où dans le monde. L'hébergement et le reste des produits de voyage se situent entre les deux. Il y a plusieurs grands acteurs qui agrègent les hôtels, et une tonne de petits fournisseurs avec beaucoup d'agrégateurs qui ne couvrent qu'une partie du spectre. Par exemple, vous pouvez louer un phare et ce n'est même pas si cher - mais vous ne pourrez pas comparer les prix de différents phares au même endroit.

Si vous optez pour le modèle économique de Kayak, vous finirez probablement par gratter les sites web. Si vous travaillez avec l'intégration de différents fournisseurs, vous travaillerez souvent avec des APIs, dont certaines sont assez bonnes, et la plupart sont tolérables. Je n'ai pas travaillé avec les flux RSS, mais il n'y a pas beaucoup de différences entre les flux RSS et le web scraping. Il y a aussi une quatrième option non mentionnée dans la réponse de Jeff... celle où vous obtenez vos données chaque nuit, par exemple des fichiers .CSV via FTP et similaires.

La vie est difficile (mini-rant)

Et puis il y a la complexité. Plus de valeur vous voulez ajouter, plus de complexité vous devrez gérer. Pouvez-vous rechercher des hébergements qui autorisent les animaux de compagnie? Pour une auberge située à moins de 5 km du centre-ville? Associez-vous des vols, et êtes-vous capable de garantir que le voyageur disposera de suffisamment de temps pour passer d'un aéroport à l'autre... pouvez-vous vendre le transport à l'avance? Un célèbre violoncelliste ne veut pas se séparer de son précieux violoncelle du XVIIIe siècle; pouvez-vous lui vendre un autre siège pour le violoncelle (oui, je ne l'invente pas)?

Vous voulez comparer les prix? Bien sûr, la chambre est à 30 EUR par nuit. Mais vous pouvez soit obtenir un double pour 30 et un simple pour 20, soit obtenir un lit supplémentaire dans un double et bénéficier de 70% de réduction pour la troisième personne. Mais seulement s'il s'agit d'un enfant de moins de 12 ans; nos lits supplémentaires ne sont pas pour les adultes. Et vous n'obtenez pas le prix pour le lit supplémentaire dans les résultats de recherche - seulement lorsque vous calculez le prix final.

Et ne me lancez même pas sur le packaging dynamique. Vous voulez vendre un hébergement + une location de voiture? Pas de problème; intégrez-vous avec deux fournisseurs différents, et c'est parti... en mettant à jour manuellement la liste des emplacements dans la ville (du fournisseur de location de voitures) pour correspondre avec les hôtels (du fournisseur d'hébergement, qui ne vous fournit que la ville pour chaque hôtel). Bien sûr, à condition que vous ayez déjà assorti la liste des villes des deux, puisqu'il n'y a pas de standard international pour les codes de ville.

Contrairement à de nombreuses autres industries qui ont de nombreux produits, l'industrie du voyage a de nombreux produits très complexes. Amazon a de la chance; vendre des livres et vendre des pommes de terre, c'est la même chose; vous pouvez même les expédier dans la même boîte. Ils se combinent facilement et ne sont pas assemblés à partir de nombreuses pièces. :)

P.S. Lien vers un fil de discussion récent intéressant sur Hacker News avec des informations internes sur les vols. P.P.S. Récemment tombé sur un excellent blogpost bien que plutôt ancien sur le protocole NDC de l'IATA avec un aperçu de la façon dont l'industrie du voyage est connectée et une leçon d'histoire sur comment cela s'est produit.

0 votes

Domchi, cela a-t-il beaucoup changé cette année? Y a-t-il d'autres APIs disponibles maintenant?

0 votes

Non, pas beaucoup ; le marché est fragmenté et il est peu probable que cela change bientôt, voire jamais. L'événement notable est l'entrée de Google sur le marché des vols (via ITA Software, voir la réponse de mavrcks) ; ils ont les ressources pour consolider le marché et offrir des API mais je doute que ce soit ce qu'ils ont l'intention ou sont capables de faire. Dans le monde des start-ups, le concurrent le plus intéressant est probablement airbnb.com mais jusqu'à présent, ils n'offrent pas d'API. Les API dans ce domaine ne sont pas difficiles à trouver, mais elles sont rarement gratuites. Consultez programmableweb.com/apitag/booking et programmableweb.com/apitag/travel pour une bonne liste d'API.

0 votes

Est-ce que vous dites que Kayak.com récupère des contenus sur les sites des compagnies aériennes, et qu'ils n'ont pas à payer pour cela ? Quel est leur modèle économique qui leur permet de le faire ? Les conditions d'utilisation des principales compagnies aériennes semblent indiquer qu'il est interdit de récupérer des contenus/données de leur site pour une utilisation sur un autre site.

9voto

mavrck Points 1061

Ils utilisent un logiciel tel que ITA Software, qui est l'une des sociétés que Google est en train d'acquérir.

1 votes

Attrapé entre-temps, voir developers.google.com/qpx-express/v1/trips/search pour une API

8voto

Jeff Busby Points 891

Seulement 3 façons que je connais d'obtenir des données à partir de sites Web.

Flux RSS - Nous utilisons beaucoup les flux rss dans mon entreprise pour intégrer les données des sites existants avec nos applications. C'est rapide et la plupart des sites ont déjà un flux RSS disponible. Le problème avec cela est que tous les sites n'implémentent pas correctement la norme RSS, donc si vous récupérez des données à partir de nombreux flux RSS sur de nombreux sites, assurez-vous d'écrire votre code de manière à pouvoir ajouter facilement des exceptions et des filtres.

API - Ceux-ci sont bons s'ils sont bien conçus et ont toutes les informations dont vous avez besoin, cependant ce n'est pas toujours le cas, de plus si les sites n'utilisent pas un format API standard, alors vous devrez supporter plusieurs API.

Web Scraping - Cette méthode serait la moins fiable ainsi que la plus coûteuse à maintenir. Mais si vous n'avez pas d'autre choix, cela peut être fait.

4voto

Tim Cooper Points 2481

Travelport offre un produit appelé "Universal API" qui se connecte aux vols, aux hôtels, aux sociétés de location de voitures et gère les offres de forfaits ainsi que toutes les diverses complexités liées aux taxes et aux taux de change :

https://developer.travelport.com/app/developer-network/resource-centre-uapi

Je viens de commencer à l'utiliser et ça semble bien pour l'instant. Les requêtes sont un peu lentes, mais c'est le cas de toutes les requêtes sur le site de chaque OTA (agence de voyages en ligne).

0 votes

Quel est le coût d'utilisation de l'API universelle ?

1 votes

J'ai oublié. Un frais unique dans les milliers bas plus un frais annuel dans les milliers bas, je pense.

0 votes

Est-ce que l'API universelle est disponible pour les appareils mobiles?

3voto

Jakobud Points 14581

Cet article dit que Kayak a été invité à arrêter de scrapping une page d'une certaine compagnie aérienne. Cela me fait penser qu'ils font probablement du scraping sur des sites avec lesquels ils n'ont pas de relation (et un flux de données qui vient avec cette relation).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X