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

如何构造正确的GET URL获取Untappd页面更多菜单的JSON数据?

正确构造请求的方法

首先纠正你参数对应错误的问题:

  • JS里的t对应按钮的data-venue-id,也就是469603
  • JS里的n是当前页面已加载的.section-area .menu-section元素数量,初始时如果已经有1个,那第一次请求就是1
  • JS里的a对应按钮的data-menu-id,也就是78074484

根据你提供的AJAX代码,正确的GET请求URL应该是:

https://untappd.com/venue/more_menu_section/469603/1?menu_id=78074484

关键注意点:

  1. 不要用data=包裹JSON,直接把menu_id作为普通GET参数传递——JS里的data: "menu_id=" + a就是直接拼接成GET参数,不是JSON格式。
  2. n的值是动态的:每次点击"Show More"后,页面会新增menu-section,下一次请求的n要改成当前已加载的数量(比如第一次请求后如果新增了15个,那下一次n就是1+15=16)。
  3. 请求需要带上Untappd的Cookie和请求头(比如User-Agent),否则可能被反爬拦截。用requests的话,可以先请求原页面获取Cookie,再发起这个AJAX请求。

示例Python代码片段:

import requests
from bs4 import BeautifulSoup

base_url = "https://untappd.com/v/southern-cross-kitchen/469603"
session = requests.Session()
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
})

# 先请求原页面获取Cookie和初始menu-section数量
response = session.get(base_url)
soup = BeautifulSoup(response.text, "html.parser")
initial_section_count = len(soup.select(".section-area .menu-section"))
venue_id = "469603"
menu_id = "78074484"

# 构造请求URL
ajax_url = f"https://untappd.com/venue/more_menu_section/{venue_id}/{initial_section_count}"
params = {"menu_id": menu_id}

# 发起AJAX请求
ajax_response = session.get(ajax_url, params=params)
if ajax_response.status_code == 200:
    data = ajax_response.json()
    # 处理返回的HTML片段
    more_html = data.get("view")
    # 用BeautifulSoup解析新增内容
    more_soup = BeautifulSoup(more_html, "html.parser")
    # 提取需要的信息
    print(more_soup.prettify())
else:
    print(f"请求失败,状态码:{ajax_response.status_code}")

内容的提问来源于stack exchange,提问作者Tendekai Muchenje

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:26:02