使用post request python获取购物车项目

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (159)

在过去的几天里我一直在浏览stackoverflow,并且一直在寻找很多不同的视频和论坛,但由于某种原因我无法让它工作。我试图在https://www.toytokyo.com/medicom-toy-kaws-together-black/上自动添加一个项目到购物车,我甚至得到了正确的200响应代码,但是当检查购物车时它说那是空的。

这是它需要的请求有效负载。

------WebKitFormBoundary2abcTSnRV9XhBx4h
Content-Disposition: form-data; name="action"

add
------WebKitFormBoundary2abcTSnRV9XhBx4h
Content-Disposition: form-data; name="product_id"

4806
------WebKitFormBoundary2abcTSnRV9XhBx4h
Content-Disposition: form-data; name="qty[]"

1
------WebKitFormBoundary2abcTSnRV9XhBx4h--

这是我正在做的发送POST请求。

payload = {'action': 'add', 'product_id': 4806, 'qty[]': 1}

get = requests.get("https://www.toytokyo.com/medicom-toy-kaws-together-black/")

post = requests.post("https://www.toytokyo.com/remote/v1/cart/add", data=payload)

print(post.status_code, post.content)

get = requests.get("https://www.toytokyo.com/cart.php")

print(get.status_code, get.text)

我不确定我是否做错了什么,但是从我所能说的那里得到了正确的答案。

编辑:下面回答

对于那些可能在以后遇到这种情况的人,我接受了下面评论的人的建议并创建了一个名为的变量session并使用session = requests.Session()它来允许程序在您发送的每个新请求中保留。该session变量还具有所有的相同的方法请求本身。所以我只是替换了使用请求的所有内容并将其替换为session。

提问于
用户回答回答于

您执行正确的POST / GET呼叫,但是您需要考虑到您还需要一些方法来跟踪“会话”。可能在真实页面上,cookie用于跟踪购物车的内容。因此,当您请求购物车内容时,您需要包含此Cookie。为此,请使用请求会话将Cookie添加到您的代码中:

s = requests.Session() # cookies are stored in the session

payload = {'action': 'add', 'product_id': 4806, 'qty[]': 1}

get = s.get("https://www.toytokyo.com/medicom-toy-kaws-together-black/")

post = s.post("https://www.toytokyo.com/remote/v1/cart/add", data=payload)

print(post.status_code, post.content)

get = s.get("https://www.toytokyo.com/cart.php")

print(get.status_code, get.text)

扫码关注云+社区

领取腾讯云代金券