Yelp 전체 메뉴 스크래핑 절차
Yelp Place 페이지에서 “Full Menu” 버튼이 있는 레스토랑은 전체 메뉴 페이지를 제공합니다. SerpApi의 응답에서 response[:place_results][:full_menu] 필드가 존재하면 해당 레스토랑이 전체 메뉴를 가지고 있음을 나타냅니다. 전체 메뉴를 스크래핑하기 위해서는 요청 매개변수 full_menu를 true로 설정하여 full_menu_results를 확보할 수 있습니다.
full_menu_results 내 주요 정보
full_menu_results에는 메뉴 이름, 제목, 인기 메뉴 항목(링크 포함), 리뷰, 리뷰 확장 링크, 썸네일 등 다양한 유용한 정보가 포함됩니다. 또한, 메뉴 섹션별로 항목 설명, 가격, 썸네일, 사진 및 리뷰 수, 리뷰 링크 등 매우 상세한 데이터가 제공됩니다.
다중 메뉴 처리 방법
일부 레스토랑은 여러 개의 메뉴를 제공하며, 이 정보는 response[:full_menu_results][:menus]에서 모두 확인할 수 있습니다. 특정 메뉴를 스크래핑하고자 할 경우, menu_name 요청 매개변수에 해당 메뉴의 이름을 정확히 지정해야 합니다. 만약 menu_name이 지정되지 않으면, 레스토랑에서 기본으로 설정한 메뉴가 스크래핑됩니다.
SerpApi 계정 설정 및 API 연동
-
SerpApi 계정 생성: SerpApi는 월 250회 검색을 제공하는 무료 티어를 운영하고 있습니다. 유효한 이메일과 전화번호를 사용하여 가입 페이지에서 계정을 생성합니다.
-
Playground 활용: 계정 생성 후 SerpApi Playground를 통해 Yelp Place Full Menu에서 얻을 수 있는 다양한 정보를 탐색할 수 있습니다.
place_id와full_menu: "true"를 설정하여 기본 메뉴 스크래핑 결과를 확인하는 예시가 제공됩니다. -
API 키 통합: 애플리케이션에서 SerpApi 서비스를 프로그래밍 방식으로 사용하려면 대시보드에서 고유한 비밀 API 키를 복사하여 사용해야 합니다. API 키는 보안에 유의해야 하며, 노출 시 관리 페이지에서 새 키를 생성할 수 있습니다.
Ruby를 활용한 SerpApi 연동 예시
SerpApi를 Ruby 애플리케이션에 통합하는 것은 매우 간단합니다. 다음은 serpapi gem을 사용하여 Yelp Place Full Menu 결과를 검색하는 코드 예시입니다.
ruby
require "serpapi"
client = SerpApi::Client.new(
engine: "yelp_place",
place_id: "juniors-restaurant-new-york-9",
full_menu: "true",
api_key: "YOUR_SECRET_API_KEY"
)
results = client.search
full_menu_results = results[:full_menu_results]
이 코드는 yelp_place 엔진과 특정 place_id를 사용하여 전체 메뉴를 요청하고, 그 결과를 full_menu_results 변수에 저장하는 과정을 보여줍니다.