kayak.com과 같은 사이트는 어떻게 콘텐츠를 집계합니까? [닫은]
안녕하세요, 저는 새로운 프로젝트에 대한 아이디어를 가지고 놀았고 Kayak.com과 같은 서비스가 수많은 소스의 데이터를 빠르고 정확하게 집계 할 수있는 방법에 대해 누군가가 알고 있는지 궁금합니다. 더 구체적으로, Kayak.com이 API와 상호 작용하고 있거나 사용자 요청을 이행하기 위해 항공사 및 호텔 웹 사이트를 크롤링 / 스크래핑하고 있다고 생각하십니까? 나는 이런 종류의 일에 대한 정답이 하나도 없다는 것을 알고 있지만 다른 사람들이 이것에 대해 좋은 방법이 될 것이라고 생각하는 것을 알고 싶습니다. 도움이된다면 내일 kayak.com을 만들 것이라고 가정하십시오. 데이터는 어디에서 가져 오나요?
저는 여행 업계에서 귀하가 설명하는 정확한 종류의 프로젝트를 담당하는 소프트웨어 설계자 / 프로젝트 리더로 일하고 있습니다. 우리 지역에서는 공급 업체와 직접 협력하지만 나가는 경우에는 여러 애그리 게이터와 연결합니다.
당신의 질문에 답하기 위해 ... 당신이 가지고있는 일부 데이터, 당신은 다양한 방법으로 얻은 일부, 그리고 일부는 고문 할 때까지 고문하고 비틀어 야합니다.
당신의 각도는 무엇입니까?
물어봐야 할 질문은 ... Kayak과 같은 광고를 판매하고 싶습니까 아니면 Expedia와 같은 광고를 하시겠습니까? 검색이나 여행 서비스 판매에 관심이 있습니까? 틈새 시장 (예 : 항공 여행) 또는 모든 것 (숙박, 항공사, 렌터카, 교통 / 관광 / 회의 등의 추가 서비스)을 타겟팅합니까? 지역 (미국 또는 미국 일부) 또는 전 세계를 타겟팅합니까? 얼마나 깊이 이동합니까? 단일 화면에 여러 사이트를 표시합니까, 아니면 여러 서비스를 함께 묶어 동적으로 패키징합니까?
데이터 얻기
Kayak 비즈니스 모델을 사용하는 경우 기술적으로 사이트의 허가가 필요하지 않지만 많은 사이트에는 IFrames 또는 기타 간단한 방법으로 고객을 사이트로 안내하는 제휴 프로그램이 있습니다. 플러스 측면에서 지불 / 불만 및 여행자 스스로 처리 할 필요가 없습니다. 단점은 ... 직접 가격을 비교하고 가장 저렴한 옵션을 사용자에게 제공하려면 더 깊은 수준에서 통합해야하며 이는 API와 웹 스크래핑을 의미합니다.
웹 스크래핑은 ... 피하십시오. 짜증 난다. 정말. 그냥 하지마. 이것에 대해 저를 믿으십시오. 예를 들어, 웹 스크래핑 없이는 얻을 수없는 저렴한 비용과 같은 것들이 있습니다. 저가 항공사는 부가가치 서비스를 기반으로합니다. 사용자가 자신의 웹 사이트를 볼 수 없다면 추가 물건을 팔지 않고 아무것도 얻지 못합니다. 따라서 그들은 제휴사가없고 API를 제공하지 않으며 거의 지속적으로 사이트 레이아웃을 변경합니다. 그러나 웹 사이트를 스크랩하여 멋진 API로 래핑하여 생계를 유지하는 회사가 있습니다. 여유가 있다면 사용자에게 저가 항공편의 비용 비교를 제공 할 수 있으며 이는 엄청납니다.
반면에 API를 제공하는 "일반"통신사가 있습니다. 항공사는 모두 IATA 하에 통합되어 있기 때문에 항공사에 도착하는 것은 그리 큰 문제가 아닙니다 . 기본적으로 IATA에서 구매하면 IATA가 돈을 이동 통신사에 분배합니다. 그러나 통신사 네트워크에 직접 연결하고 싶지는 않을 것입니다. 요즘에는 웹 서비스와 SOAP가 있지만 80es 스타일 프로토콜을 사용하는 메인 프레임과 상호 작용할 수있는 텍스트 프롬프트 주위에 엄청나게 얇은 래퍼 인 SOAP 프로토콜이 있다고 말할 때 믿습니다 (유닉스를 생각하면 명령 당 요금이 청구되는 위치를 묻는 메시지가 표시되며 한 번의 검색을 수행하려면 약 20 개의 명령이 필요합니다. 그렇기 때문에 더 나은 API를 사용하여 먹이 사슬의 아래쪽에있는 누군가와 연결하고 싶을 것입니다.
따라서 항공사는 가우스 곡선의 두 극단에 있습니다. 한쪽에는 개별 공급 업체가 있고 다른 하나의 중앙 집중식 시스템에서는 하나의 API를 구현하고 전 세계 어디에서나 비행 할 수 있습니다. 숙박과 나머지 여행 상품은 그 사이에 있습니다. 호텔을 집계하는 여러 대기업과 스펙트럼의 일부만 다루는 집계자가 많은 소규모 공급 업체가 많습니다. 예를 들어 등대를 빌릴 수 있는데 그다지 비싸지는 않지만 한 곳에서 여러 등대의 가격을 비교할 수는 없습니다.
Kayak 비즈니스 모델에 관심이 있다면 아마도 웹 사이트를 긁어 내게 될 것입니다. 다른 공급자를 통합하는 경우 API를 사용하는 경우가 많으며, 그중 일부는 꽤 좋고 대부분은 허용 할 수 있습니다. RSS로 작업 한 적은 없지만 RSS와 웹 스크래핑 사이에는 큰 차이가 없습니다. Jeff의 답변에 언급되지 않은 네 번째 옵션도 있습니다. 예를 들어 FTP 등을 통해 .CSV 파일과 같이 야간에 데이터를 가져 오는 옵션입니다.
인생은 짜증나
그리고 복잡성이 있습니다. 추가하려는 가치가 많을수록 처리해야하는 복잡성이 증가합니다. 애완 동물이 허용되는 숙소를 검색 할 수 있습니까? 시내 중심에서 5km 미만 거리에있는 호스텔은? 항공편을 결합하고 있으며 여행자가 한 공항에서 다른 공항으로 이동할 수있는 충분한 시간을 보장 할 수 있습니까? 교통편을 미리 판매 할 수 있습니까? 유명한 첼리스트는 그의 귀중한 18 세기 첼로에서 헤어지기를 원하지 않습니다. 그에게 첼로를위한 다른 자리를 팔 수 있습니까 (예,이 자리를 만들지 않음)?
가격을 비교하고 싶습니까? 물론입니다. 객실 요금은 1 박당 EUR 30입니다. 그러나 30 인용 더블 1 개와 20 인용 싱글 1 개를 받거나 더블 침대 1 개를 추가하고 세 번째 사람에게 70 % 할인을받을 수 있습니다. 그러나 12 세 미만의 어린이 인 경우에만 해당됩니다. 엑스트라 베드는 성인용이 아닙니다. 그리고 최종 가격을 계산할 때만 검색 결과에서 엑스트라 베드 가격을 알 수 없습니다.
그리고 동적 패키징을 시작하지 마십시오. 숙박 + 렌트카 판매를 원하십니까? 문제 없어요; 두 개의 서로 다른 제공 업체와 통합하고 이동 중 ... (렌트카 제공 업체에서) 호텔과 일치하도록 도시의 위치 목록을 수동으로 업데이트합니다 (각 호텔의 도시 만 제공하는 숙박 업체 제공 업체에서 제공함). 물론, 도시 코드에 대한 국제 표준이 없기 때문에 이미 두 도시의 목록을 일치 시켰다면 말입니다.
상품이 많은 다른 산업과 달리 여행 산업은 매우 복잡한 상품이 많습니다. 아마존은 쉽습니다. 책을 팔고 감자를 파는 것도 똑같습니다. 같은 상자에 넣어 배송 할 수도 있습니다. 그들은 쉽게 결합되고 많은 부품으로 조립되지 않습니다. :)
PS 비행에 관한 내부 정보 와 함께 Hacker News의 흥미로운 최근 스레드에 연결 . PPS는 최근 IATA의 NDC 프로토콜에 대한 다소 오래된 블로그 게시물에 여행 산업이 어떻게 연결되어 있는지에 대한 개요와 이것이 어떻게 생겨 났는지에 대한 역사 수업을 우연히 발견했습니다 .
그들은 ITA Software 와 같은 소프트웨어 패키지를 사용하는데 , 이는 Google이 선택하는 과정에있는 회사 중 하나입니다.
웹 사이트에서 데이터를 얻는 방법은 3 가지뿐입니다.
RSS 피드-회사에서 RSS 피드를 많이 사용하여 기존 사이트의 데이터를 앱과 통합합니다. 빠르고 대부분의 사이트에는 이미 RSS 피드가 있습니다. 이 문제는 모든 사이트가 RSS 표준을 제대로 구현하는 것은 아니므로 여러 사이트의 많은 RSS 피드에서 데이터를 가져 오는 경우 예외와 필터를 쉽게 추가 할 수 있도록 코드를 작성해야합니다.
API-잘 설계되어 있고 필요한 모든 정보가 있으면 좋지만 항상 그런 것은 아니며 사이트가 표준 API 형식을 사용하지 않는 경우 여러 API를 지원해야합니다.
웹 스크래핑-이 방법은 유지 관리 비용이 가장 높을뿐만 아니라 가장 신뢰할 수없는 방법입니다. 그러나 당신이 아무것도 남기지 않는다면 그것은 할 수 있습니다.
Travelport는 항공편, 호텔 및 렌터카 회사에 연결하고 패키지 거래 및 세금 및 환율과 관련된 모든 다양한 복잡성을 처리하는 "Universal API"라는 제품을 제공합니다.
https://developer.travelport.com/app/developer-network/resource-centre-uapi
방금 사용하기 시작했고 지금까지는 괜찮아 보입니다. 쿼리는 약간 느리지 만 모든 OTA (온라인 여행사) 사이트의 모든 쿼리도 마찬가지입니다.
이 기사 는 Kayak이 특정 항공사 페이지의 폐기를 중지하도록 요청 받았다고 말합니다. 그것은 그들이 관계가없는 사이트 (그리고 그 관계와 함께 제공되는 데이터 피드)에서 스크래핑을 할 것이라고 믿게합니다.
최근 비행 비교 웹 사이트에서 찾은 두 가지 좋은 API가 있습니다.
하나있다 저희 , 그리고 하나 스카이 스캐너 . 둘 다 여러 항공사의 데이터 범위와 폭이 넓고 문서도 좋은 것 같습니다.
Wego는 사용자가 귀하의 앱에서 예약 웹 사이트로 이동할 때마다 지불하고 Skyscanner는 제휴사에 '수익'의 50 %를 지불합니다 (이는 항공사에서받는 수수료를 의미한다고 가정합니다).
This is an old post but I thought I'd just add. I'm a data architect who works for a company that feeds these travel sites with content. This company enters into contracts with many hotel brands, individual hotels and other content providers. We aggregate this information then pass it onto the different channels. They then aggregate again in to their system. The Large GDS systems are also content providers. Aggregation is done by many methods... matching algorithms(in-house) and keys. Being an aggregation service, we need to communicate on the client level.
Hope this helps! cheers!
참고URL : https://stackoverflow.com/questions/4607141/how-does-a-site-like-kayak-com-aggregate-content
'Programing' 카테고리의 다른 글
컴파일 타임에 응용 프로그램 폴더로 파일 복사 (0) | 2020.10.05 |
---|---|
LaTeX에서 두 그림을 같은 페이지에 유지하는 방법은 무엇입니까? (0) | 2020.10.05 |
빌드 서버에서 Visual Studio없이 ASP.NET 4.5 빌드 (0) | 2020.10.05 |
.NET 메모리 부족 예외-1.3GB를 사용했지만 16GB가 설치되어 있습니다. (0) | 2020.10.05 |
Java 객체를 XML 문자열로 변환 (0) | 2020.10.05 |