【问题标题】:Adding a product to cart on Supreme via POST requests in Python - Request not working通过 Python 中的 POST 请求将产品添加到 Supreme 上的购物车 - 请求不起作用
【发布时间】:2020-06-26 23:20:51
【问题描述】:

我正在尝试用 Python 制作一个机器人,它可以在检测到时将产品添加到我在 Supreme 上的购物车中。我希望它高效,当我尝试使用 HTTP 发布请求来完成工作时,我收到响应代码 200(OK),但产品未添加到我的购物篮中。

我已经用 Python requests 模块和 selenium requests 模块尝试过这个。代码如下:

post_headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36', 'x-requested-with': 'XMLHttpRequest', 'content-type': 'application/x-www-form-urlencoded'}
post_data = {"utf-8": "%E2%9C%93", 's': size_id, 'st': style_id, "X-CSRF-Token": csrf, "commit": "add to cart"}
url = "https://www.supremenewyork.com/shop/{productid}/add".format(productid=id)
add_to_cart = session.post(url, headers=post_headers, data=post_data)

add_to_cart 的响应是 HTTP 代码 200(OK),但是当我运行 print(add_to_cart.text) 时,我希望看到我添加的产品,但我只看到 [](移动用户代理)或至尊主页html(桌面用户代理),并找出篮子里什么都没有。我也尝试过使用移动用户代理来让它工作(json),但也失败了。

当我尝试使用 selenium 请求时,我使用的是 Google Chrome(否则我使用的是自定义用户代理)。

如果有任何建议或方法来解决此问题,并能够通过 HTTP POST 请求将产品添加到我的购物篮中,我将不胜感激。

【问题讨论】:

  • 这个问题不清楚,您目前是否使用您的代码登录?是/否?

标签: python python-3.x selenium python-requests selenium-chromedriver


【解决方案1】:

为了查看你在响应中得到了什么,你也可以使用.content

add_to_cart = session.post(url, headers=post_headers, data=post_data)
print(add_to_cart.content)

根据我在该内容中看到的返回内容,只有 var h = {"76049":1,"cookie":"1 item--76049,26482"} 有助于验证它是否已添加。

根据我在该网站上看到的内容,为了获取购物车的全部内容,您还应该使用您的标题执行另一个 API 调用,即在 https://www.supremenewyork.com/shop/cart 上获取。

希望这会有所帮助。祝你好运!

【讨论】:

  • .content 帮助了我,现在我进入了 404 页面。在我收到回复 200 之前。这很奇怪,但是谢谢!我仍然以[] 作为回应
  • 太棒了@timb123!祝你好运!如果有帮助,请随时投票或选择答案:)
  • 404奇怪,产品还在吗?网址是什么?
  • 404 错误现在消失了,但我仍然以[] 作为响应。当我使用 Chrome 的 Inspect Element Tool 查看这个 post 请求的响应时,我得到了一些 json
【解决方案2】:

为什么您希望在对该 POST 的响应中看到您的购物车?我知道这似乎合乎逻辑,但许多网站都是以奇怪而神秘的方式构建的。

您使用的是 Chrome 开发者工具吗?如果您在“网络”选项卡中查找将某些内容添加到购物车的请求,您会在“响应”选项卡下看到您刚刚获得了一些 JavaScript 负载。但是,如果您查看响应 cookie,您会看到如下内容:

购物车 1+项目--62197%2C28449

看起来像是购物车中商品的产品 ID,位于 Cookie 中。然后,您可以通过以下方式在您的回复中查找:

add_to_cart.cookies["cart"]

或者,您可以在以下位置执行 GET:

https://www.supremenewyork.com/shop/cart

但您需要解析返回的 HTML。可能更容易检查 Cookie。

【讨论】:

  • 我希望在我的 POST 请求中看到一种购物车响应,因为许多其他使用相同或相似代码行的程序员确实得到了响应。我会看看你的建议,看看它们是否有帮助。我发布这个是因为我认为我的代码中缺少一些东西。也许 Supreme 改变了他们的网站,我不知道
猜你喜欢
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 2021-12-17
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
相关资源
最近更新 更多