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

使用Python+Beautiful Soup爬取Countdown.co.nz价格及门店切换问题求助

解决Countdown API指定门店价格无效的问题

核心问题排查与解决步骤

1. 必须复用会话(Session)

Countdown的API依赖会话Cookie关联门店设置,所有请求必须复用同一个requests.Session()对象,否则PUT设置的门店ID不会被后续GET请求识别。

示例代码:

import requests

# 初始化会话,所有请求共用这个session
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",
    "Accept": "application/json, text/plain, */*"
})

# 先访问首页获取初始会话Cookie
session.get("https://www.countdown.co.nz/")

# 1. 设置目标门店(PUT请求)
set_store_url = "https://www.countdown.co.nz/api/v1/users/me/delivery-address"
# 部分场景需补充addressType参数,确认门店类型
payload = {"addressId": "1431761", "addressType": "store"}
response = session.put(set_store_url, json=payload)

# 验证门店设置是否成功
if response.status_code == 200:
    print("门店设置成功")
else:
    print(f"门店设置失败:状态码{response.status_code},响应内容{response.text}")

# 2. 获取对应门店的商品价格(复用同一session发送GET请求)
product_api_url = "https://www.countdown.co.nz/api/v1/products/58643"  # stockcode替换为目标商品编码
product_res = session.get(product_api_url)
if product_res.status_code == 200:
    product_data = product_res.json()
    current_price = product_data["products"][0]["price"]["price"]
    print(f"当前门店商品价格:${current_price}")
else:
    print(f"获取商品数据失败:状态码{product_res.status_code}")

2. 确认API端点与参数正确性

  • 抓包验证设置门店的API端点:通过浏览器开发者工具的"网络"面板,查看前端切换门店时发送的PUT请求,确认端点和payload结构(比如是否需要额外addressType参数)。
  • 检查参数名:部分场景下,门店ID对应的参数可能是storeId而非addressId,以抓包结果为准。

3. 验证门店设置是否生效

在PUT请求后,调用用户信息接口确认当前选中门店:

user_info_url = "https://www.countdown.co.nz/api/v1/users/me"
info_res = session.get(user_info_url)
if info_res.status_code == 200:
    user_data = info_res.json()
    selected_store = user_data["deliveryAddress"]["store"]
    print(f"当前生效门店:{selected_store['name']}(ID:{selected_store['id']})")

如果返回的门店与你设置的不一致,说明PUT请求参数或端点有误。

4. 补充必要请求头

Countdown API会校验请求合法性,必须包含的关键头:

  • User-Agent:模拟真实浏览器,避免被识别为爬虫
  • Accept:指定接受JSON格式
  • Referer:可设置为Countdown商品页面URL,增强请求合法性

常见错误点

  • 不要单独使用requests.get()/requests.put(),必须复用Session,否则Cookie无法共享。
  • 无效门店ID会触发服务器自动切换到默认门店,导致价格无变化,需确保使用你提供的有效门店ID。
  • API版本可能更新,若上述端点失效,需重新抓包确认最新接口地址。

内容的提问来源于stack exchange,提问作者Chris Norris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:15:28