如何用SerpAPI结合Google Hotels获取预算内最贵酒店
获取Google Hotels预算内最贵酒店的SerpAPI解决方案
核心思路:绕过Google Hotels的排序限制,结合SerpAPI筛选+本地处理
Google Hotels本身不支持价格降序,且固定区间容易遗漏有效结果,核心解决思路是先获取所有预算内酒店,再本地排序;或通过动态调整筛选范围缩小目标集。
方案1:全量预算内结果+本地降序排序
这是最直接可靠的方法,步骤如下:
- SerpAPI仅设预算上限:调用时只传
max_price参数(对应你的预算),不设置min_price,确保所有价格≤预算的酒店都被纳入结果。 - 提取并标准化价格字段:从返回的
properties数组中,优先提取price.total(总价,包含税费/服务费,比每晚价格更准确),去掉货币符号、逗号等非数值字符,转成可排序的数值类型。 - 本地降序排序:对处理后的酒店列表按价格从高到低排序,取顶部结果即为预算内最贵的酒店。
代码示例(Python)
import serpapi # 初始化SerpAPI客户端 client = serpapi.Client(api_key="YOUR_API_KEY") # 基础搜索参数:仅设预算上限 search_params = { "engine": "google_hotels", "q": "Paris hotels", # 目标地点 "max_price": 800, # 预算上限(单位:欧元,根据地区调整) "check_in": "2024-07-01", "check_out": "2024-07-05" } # 获取搜索结果 response = client.search(search_params) # 处理价格并整理酒店数据 processed_hotels = [] for prop in response.get("properties", []): price_info = prop.get("price", {}) total_price_str = price_info.get("total") if not total_price_str: continue # 跳过无明确价格的酒店 # 标准化价格:去掉货币符号和逗号,转成浮点数 try: clean_price = float(total_price_str.replace("€", "").replace(",", "")) processed_hotels.append({ "name": prop["name"], "price": clean_price, "url": prop["link"], "rating": prop.get("rating", "N/A") }) except ValueError: continue # 跳过价格格式异常的条目 # 按价格降序排序 sorted_hotels = sorted(processed_hotels, key=lambda x: x["price"], reverse=True) # 输出预算内最贵的5家酒店 print("预算内最贵的酒店:") for idx, hotel in enumerate(sorted_hotels[:5], 1): print(f"{idx}. {hotel['name']} - €{hotel['price']} | 评分:{hotel['rating']}")
方案2:动态调整价格区间缩小目标集
如果预算内酒店数量极多(分页成本高),可以通过动态调整筛选范围,让返回结果更集中在预算上限附近:
- 初始全量扫描:先调用一次仅设
max_price的请求,获取所有预算内酒店的最高价格current_top_price。 - 判断是否缩小范围:如果
current_top_price远低于预算(比如低于预算的80%),设置min_price = 预算 * 0.8,再次发起请求。 - 二次结果排序:对第二次返回的结果进行本地降序排序,取顶部即可得到接近预算上限的高价酒店。
关键细节
- 调整比例可根据实际情况修改(70%-90%区间均可),避免因比例过高导致无结果返回。
- 如果第二次请求无结果,立刻回退到初始全量结果处理。
注意事项
- 分页处理:如果预算内酒店超过SerpAPI默认返回数量(通常10-20条),需要设置
start参数(如start=20获取第二页),遍历所有分页后再统一排序,避免漏掉高价酒店。 - 价格类型确认:务必提取
total总价,而非per_night每晚价格,避免排序误差。 - 货币格式兼容:不同地区价格格式不同(如美元带$、英镑带£),处理时要针对性替换符号。
内容的提问来源于stack exchange,提问作者Tomer Fikler
相关产品推荐
相关产品推荐

