我正在尝试创建一个请求python脚本,该脚本将添加到购物车并最终结帐。我做了一个发帖请求 (https://yeezysupply.com/cart/add.js),这是我在网络chrome开发人员工具页面中找到的添加到购物车端点。它有一个带有3个字典的json负载。 ID是产品的变体ID,属性(我不知道它是什么),因此我将其留为空白以及数量。在执行Post请求时,我将数据作为参数输入。我收到400响应错误。当我打印请求文本时,什么都没有添加到我的购物车中,我收到了这一消息。
{
"status":"bad_request",
"message":"expected String to be a Hash: properties",
"description":"expected String to be a Hash: properties"
}
我对请求还很陌生,所以我不确定错误的含义。 我能够确认没有添加任何东西到我的购物车,因为我对shopify购物车端点(https://yeezysupply.com/cart.json)进行了获取请求。当我打印获取请求时,我得到了。
{
"token":"cb67e6c53c63b930b4aca1eb3b5a7510",
"note":null,
"attributes":{
},
"original_total_price":0,
"total_price":0,
"total_discount":0,
"total_weight":0.0,
"item_count":0,
"items":[
],
"requires_shipping":false,
"currency":"USD",
"items_subtotal_price":0,
"cart_level_discount_applications":[
]
}
这确认没有添加到我的购物车。有人知道我在做什么错吗?我用于测试的产品是(https://yeezysupply.com/products/flannel-lined-canvas-jacket-medium-blue?c=%2Fcollections%2Fwomen)
我尝试创建一个全局请求会话,以查看是否需要cookie。这也不起作用。
import requests
from bs4 import BeautifulSoup as soup
session = requests.Session()
atc_endpoint = 'https://yeezysupply.com/cart/add.js'
atc_info = {
"id": "1457089478675",
"properties": "{}",
"quantity": "1"
}
def add_to_cart():
pass
atc_post = session.post(atc_endpoint, data=atc_info)
atc_get = session.get('https://yeezysupply.com/cart.json')
print(atc_post.text)
我尝试使用标头,我使用标头= {“ Content-Type”:“ application / json”} 我收到以下错误:
{
"error":"822: unexpected token at 'id=1457089478675\u0026properties=%7B%7D\u0026quantity=1'"
}
我不确定api要求什么令牌。 我希望将其放入购物车并显示在“获取请求”文本中。
答案 0 :(得分:0)
尝试以下操作-
将{"Content-Type": "application/json"}
添加为请求的标头。看起来像这样-
headers {"Content-Type": "application/json"}
atc_post = session.post(atc_endpoint, data=atc_info, headers=headers)
这应该可以解决问题。您的字典对我来说看起来不错,但是如果仍然出现错误,请在发送字典之前在字典上使用json.loads
。
希望这会有所帮助。 :)
答案 1 :(得分:0)
因此,您正在构建一个Bot来结帐产品(无论如何,这似乎还是可以的)。使用Python不会对您的才华造成冒犯,但是如果您仅使用Javascript来使您的机器人进行竞标,您的生活就会变得绝对好。由于反正自然内置于浏览器中,因此您的工作将得到简化。
如果您想使用Python运行Bot服务器端作为问题类型,并且POST给您带来麻烦,请等到脚本签出为止!我不确定您现在是否可以这样做,因此您可能希望在计划中放慢脚步,直到可以证明没有问题地签出为止。你调查了吗?