You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何抓取Vivino平台同一款葡萄酒的全部可用年份对比数据

Vivino同酒款全年份数据抓取方案

你当前使用的/api/explore/explore接口仅返回搜索匹配的单一年份条目,本身不包含同酒款其他年份数据,可按以下步骤获取全年份对比数据:

  • 从现有搜索接口返回结果中提取目标酒款的唯一ID,对应字段路径为t["vintage"]["wine"]["id"],也可直接从酒款详情页URL的/w/后的数字段获取
  • 调用酒款专属API接口https://www.vivino.com/api/wines/{替换为实际酒款ID},请求头保持和你现有代码的UA一致即可,无需额外登录凭证
  • 解析该接口返回的JSON数据,其中vintages数组包含该酒款所有公开的年份数据,涵盖年份值、评分、评价数、对应价格等全量对比字段

参考实现代码:

import requests
import pandas as pd
import time

# 替换为你要查询的酒款ID
wine_id = 73846
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0"
}
# 控制请求频率避免触发反爬
time.sleep(1)
r = requests.get(
    f"https://www.vivino.com/api/wines/{wine_id}",
    headers=headers,
    params={
        "country_code": "DK",
        "currency_code": "DKK"
    }
)

# 提取所有年份数据生成结构化表
vintage_list = r.json()["vintages"]
results = [
    (
        v["wine"]["winery"]["name"],
        v["wine"]["name"],
        v["year"],
        v["statistics"]["ratings_average"],
        v["statistics"]["ratings_count"],
        v["price"]["amount"] if v.get("price") else None
    )
    for v in vintage_list
]
df = pd.DataFrame(results, columns=["酒庄", "酒款名称", "年份", "评分", "评价数", "价格"])
print(df)

注意事项:请求频率建议控制在1次/秒以上,避免触发平台反爬机制导致IP被临时限制。


内容的提问来源于stack exchange,提问作者Malte Jensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:54:03