web-dev-qa-db-fra.com

Comment un site comme kayak.com agrège-t-il le 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 façon dont un service comme Kayak.com est capable de rassembler des données provenant de tant de sources de manière si rapide et précise. Plus précisément, pensez-vous que Kayak.com interagit avec les API ou est-ce qu'ils explorent/raclent les sites Web des compagnies aériennes et des hôtels afin de répondre aux demandes des utilisateurs? Je sais qu’il n’ya pas une bonne réponse à ce type de problème, mais je suis curieux de savoir ce que les autres pensent serait un bon moyen de s’y attaquer. Si cela vous aide, supposez que vous allez créer kayak.com demain ... d'où proviennent vos données?

79
Jeff

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

Pour répondre à votre question ... certaines données dont vous disposez, certaines de vos informations, et certaines que vous devez torturer et déformer jusqu'à ce que vous avouiez.

Quel est ton angle?

Les questions que vous devez vous poser sont ... Voulez-vous vendre de la publicité comme Kayak ou prenez-vous une coupe comme Expedia? Êtes-vous dans la recherche ou dans la vente de services de voyage? Vous ciblez-vous d'un créneau (par exemple, juste un voyage en avion) ​​ou de tout (hébergement, compagnie aérienne, location de voiture, services supplémentaires tels que transports/visites touristiques/conférences, etc.)? Est-ce que vous ciblez une région (États-Unis ou une partie des États-Unis) ou le monde? Quelle est votre profondeur - affichez-vous simplement plusieurs sites sur un seul écran ou regroupez-vous différents services et les conditionnez-vous de manière dynamique?

Obtenir les données

Si vous optez pour le modèle économique Kayak, vous n'avez techniquement pas besoin de la permission du site ... mais de nombreux sites ont des programmes d'affiliation avec IFrames ou d'autres moyens simples de diriger le client vers leur site. Sur le plan positif, vous n'avez pas à traiter les paiements/plaintes et les voyageurs eux-mêmes. En ce qui concerne les inconvénients ... si vous souhaitez comparer les prix vous-même et présenter l'option la moins chère à l'utilisateur, vous devrez vous intégrer de manière plus approfondie, ce qui signifie des API et du raclage Web.

En ce qui concerne le raclage de la toile, évitez-le. Ça craint. Vraiment. Juste ne le fais pas. Fais moi confiance pour ce coup là. Par exemple, certaines choses comme les lowcosters que vous ne pouvez pas obtenir sans Web scraping. Les compagnies low cost vivent de services à valeur ajoutée. Si l'utilisateur ne voit pas son site Web, il ne vend pas de matériel supplémentaire et ne gagne rien. Par conséquent, ils n'ont pas d'affiliés, ils n'offrent pas d'API et changent la présentation de leur site presque constamment. Cependant, il existe des entreprises qui gagnent leur vie en web en grattant les sites de lowcoster et en les intégrant dans des API Nice. Si vous pouvez vous le permettre, vous pouvez donner à vos utilisateurs une comparaison des coûts des vols low cost, ce qui est énorme.

D'autre part, il existe des transporteurs "normaux" qui offrent des API. Ce n'est pas un gros problème de se rendre aux compagnies aériennes, car elles sont toutes unifiées sous IATA ; En gros, vous achetez auprès de l’IATA et l’IATA distribue l’argent aux transporteurs. Cependant, vous ne voulez probablement pas vous connecter directement au réseau de votre opérateur. Ils ont des services Web et SOAP de nos jours, mais croyez-moi quand je dis qu'il y a SOAP protocoles _ qui ne sont que des enveloppes extrêmement minces autour d'un texte Invite permettant d'interagir avec un mainframe avec un protocole de style années 80 (pensez à une invite Unix où vous êtes facturé par commande; il faut environ 20 commandes pour effectuer une recherche). C'est pourquoi vous souhaitez probablement vous connecter à quelqu'un un peu plus en aval de la chaîne alimentaire, avec une meilleure API.

Les compagnies aériennes se trouvent donc aux deux extrémités de la courbe gaussienne; D'un côté, il y a des fournisseurs individuels et de l'autre, des systèmes hautement centralisés dans lesquels vous implémentez une API et pouvez voler partout dans le monde. L'hébergement et le reste des produits de voyage sont entre les deux. Il existe plusieurs grands acteurs qui regroupent des hôtels et une tonne de petits fournisseurs avec de nombreux agrégateurs ne couvrant 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 aimez le modèle économique de Kayak, vous finirez probablement par gratter des sites Web. Si vous souhaitez intégrer différents fournisseurs, vous utiliserez souvent des API, dont certaines sont plutôt bonnes et la plupart sont tolérables. Je n'ai pas travaillé avec RSS mais il n'y a pas beaucoup de différence entre RSS et Web scraping. Il y a aussi une quatrième option qui n'est pas mentionnée dans la réponse de Jeff: celle où vous obtenez vos données la nuit, par exemple, les fichiers .CSV via FTP et similaires.

La vie est nulle (mini-rant)

Et puis il y a la complexité. Plus vous voulez ajouter de la valeur, plus vous devrez gérer de complexité. Pouvez-vous rechercher des hébergements qui autorisent les animaux domestiques? Pour une auberge située à moins de 5 km du centre-ville? Combinez-vous des vols et pouvez-vous garantir que le voyageur aura suffisamment de temps pour se rendre d’un aéroport à un 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 18ème siècle; pouvez-vous lui vendre une autre place pour le violoncelle (ouais, sans faire celle-ci)?

Voulez-vous comparer les prix? Bien sûr, la chambre coûte 30 EUR par nuit. Mais vous pouvez soit obtenir un lit double pour 30 et un lit simple pour 20 personnes, soit vous pouvez obtenir un lit supplémentaire dans un lit double et obtenir 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 d'un lit supplémentaire dans les résultats de recherche - uniquement lorsque vous calculez le prix final.

Et ne me lance même pas sur le packaging dynamique. Vous voulez vendre un logement + une voiture de location? Aucun problème; Intégrez deux fournisseurs différents, et c'est parti ... vous mettez à jour manuellement la liste des lieux de la ville (du fournisseur de location de voitures) afin de les assortir aux hôtels (du fournisseur d'hébergement, qui vous donne uniquement la ville pour chaque hôtel). Bien sûr, à condition que vous ayez déjà fait correspondre la liste des villes des deux, car il n'y a pas de norme internationale pour les codes de ville.

Contrairement à beaucoup d'autres industries qui proposent de nombreux produits, l'industrie du voyage propose de nombreux produits très complexes. Amazon a le facile; 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 presse récent sur Hacker News avec quelques informations d'initiés concernant les vols . P.P.S. Nous sommes récemment tombés sur un très vieux blogpost, bien qu'assez ancien, sur 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. .

144
Domchi

Ils utilisent un progiciel tel que ITA Software , qui est l’une des entreprises que Google est en train de récupérer.

9
mavrck

Je connais seulement 3 façons d'obtenir des données de sites Web.

Flux RSS - Nous utilisons beaucoup de flux RSS dans mon entreprise pour intégrer les données des sites existants à nos applications. C'est rapide et la plupart des sites ont déjà un flux RSS disponible. Le problème, c’est que tous les sites n’implémentent pas correctement la norme RSS. Par conséquent, si vous extrayez des données de nombreux flux RSS sur plusieurs sites, veillez à écrire votre code pour pouvoir ajouter facilement des exceptions et des filtres. 

API - Elles sont pratiques si elles sont bien conçues et contiennent toutes les informations dont vous avez besoin, mais ce n'est pas toujours le cas. De plus, si les sites n'utilisent pas de format api standard, vous devrez prendre en charge plusieurs API.

Web Scraping - Cette méthode serait la plus peu fiable et la plus coûteuse à maintenir. Mais s'il ne vous reste plus rien, cela peut être fait. 

6
Jeff Busby

Travelport propose un produit appelé "Universal API" qui se connecte aux vols, aux hôtels et aux sociétés de location de voitures et est adapté aux forfaits et aux nombreuses 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 cela semble aller jusqu'à présent. Les requêtes sont un peu lentes, mais il en va de même pour chaque requête sur le site de chaque agent de voyage en ligne (OTA).

3
Tim Cooper

Cet article dit que Kayak a été invité à arrêter de supprimer une page de certaines compagnies aériennes. Cela m'amène à penser qu'ils font probablement du grattage sur des sites avec lesquels ils n'ont pas de relation (et un flux de données qui accompagne cette relation).

3
Jake Wilson

Il y a deux bonnes API que j'ai trouvées récemment sur des sites de comparaison de vols

Il en existe un de Wego et un de Skyscanner . Les deux semblent disposer d’une bonne gamme de données provenant d’un certain nombre de compagnies aériennes et d’une bonne documentation.

Wego paie chaque fois qu'un utilisateur clique de votre application sur un site de réservation et Skyscanner verse à ses affiliés 50% de leurs "revenus" (je suppose que cela signifie la commission qu'ils perçoivent des compagnies aériennes)

2
Jonathon Blok

Ceci est un ancien post, mais je pensais juste ajouter. Je suis un architecte de données qui travaille pour une entreprise qui fournit du contenu à ces sites de voyages. Cette société conclut des contrats avec de nombreuses marques d’hôtels, des hôtels individuels et d’autres fournisseurs de contenu. Nous agrégons ces informations puis les transmettons sur les différents canaux. Ils agrègent ensuite à nouveau dans leur système . Les grands systèmes GDS sont également des fournisseurs de contenu . L’agrégation est effectuée selon de nombreuses méthodes: algorithmes de correspondance (internes) et clés. Étant un service d'agrégation, nous devons communiquer au niveau du client.

J'espère que cela t'aides! à votre santé!

0
Krdls