需要帮助以“ POST”请求发送数据

时间:2019-08-31 00:26:09

标签: python beautifulsoup python-requests

我有一个脚本,该脚本可以找到网站上产品页面的特定链接,我希望能够签出。一切正常,直到有数据(itemId,数量,sku)的POST请求为止。

我不确定自己在做什么错,所以我希望有人可以帮忙。

代码:

def checkout_item(item_url):
    website = requests.get(item_url)
    document = Soup(website.content, "html.parser")

    print('Now in product page')

    item_id = document.find('body').get('id').replace('item-', '')
    item_sku = ''

    product_variants_string = document.find('div', class_='product-variants').get('data-variants')
    product_variants_json = json.loads(product_variants_string)

    for json_element in product_variants_json:
        attributes_json = json_element['attributes']
        if attributes_json['Size'] is not f'{size_to_buy}':
            continue
        else:
            item_sku = json_element['sku']

    data = {
        'additionalFields': 'null',
        'itemId': f'{item_id}',
        'quantity': '1',
        'sku': f'{item_sku}'
    }

    print(data)

    checkout_website = requests.post(target_site + '/checkout', data=data)
    checkout_document = Soup(checkout_website.content, "html.parser")

    if checkout_document is None:
        print('checkout_document is null')
    else:
        print(checkout_document)


我用于测试结帐的项目:https://www.icantdecideyet.com/join/preorderbemyenemy-flag-printed-hoodie

输出: http://prntscr.com/ozuto0

1 个答案:

答案 0 :(得分:1)

代替

checkout_website = requests.post(target_site + '/checkout', data=data)

尝试

checkout_website = requests.post(target_site + '/checkout', data=json.dumps(data))
print(str(checkout_website.status_code))