首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Post请求在curl中运行良好,但在使用python请求时返回500

Post请求在curl中运行良好,但在使用python请求时返回500
EN

Stack Overflow用户
提问于 2021-07-12 16:12:58
回答 1查看 38关注 0票数 0

这是我的python代码:

代码语言:javascript
复制
import scrapy
from bs4 import BeautifulSoup as Soup
import requests as req

class TEst(scrapy.Spider):
    name = "test"
    start_urls = [
        'https://www.bevonordics.se/alla-produkter/pumpar/poolpumpar/pumpar-med-enkel-hastighet/hayward-poolpump-type-super-pump-17725?c=9857'
    ]

    def parse(self,response):
        soup = Soup(response.text, "lxml")
        yield {
            'parts': self.get_spare_parts(soup, url=response.url)
        }

    def get_spare_parts(self,soup,url):
        crsf_token = soup.find('input',{'name':"__csrf_token"}).get('value').strip()
        print(f"{crsf_token} token>>>>>>>>")
        spare_parts = []
        #the first artcle number getsb all spareparts, if available
        article_no = soup.find('div', class_ ="product-variants-accordion--item").get('data-variantnumber')
        res = req.request(
            method="POST",
            url ='https://www.bevonordics.se/spareparts/spareparts/',
            headers = {
                'x-csrf-token': crsf_token,
                'accept': "a*/*",
                'accept-encoding': "gzip, deflate, br",
                'accept-language': "en-GB,en-US;q=0.9,en;q=0.8",
                'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
                'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
                'origin': 'https://www.bevonordics.se',
                'referer': url
            },
            cookies = {'cookie':"_gcl_au=1.1.2133245834.1625666558; _ga=GA1.2.44217088.1625666563; _hjid=0b9189a7-774b-4054-8b3f-6679b0b1153d; allowCookie=1; _hjDonePolls=680290%2C680275; __csrf_token-6=qSHpqpknXTd1kkoeKY6xLqyyLLPIcU; session-6=24a607a1be1b0acec621d0950311356a1334f24a5463777a4c8fc6b7ef072990; _hjIncludedInPageviewSample=1; _hjTLDTest=1; _hjAbsoluteSessionInProgress=0; _hjIncludedInSessionSample=1; _gid=GA1.2.592682141.1626017440; _gat_UA-646417-39=1; x-ua-device=tablet; nocache=detail-6"},
            json={'variantNumber': article_no}
        )
        print(res)
        spare_parts.append(res.text)
        return spare_parts

这是curl版本:

代码语言:javascript
复制
curl 'https://www.bevonordics.se/spareparts/spareparts' \
  -H 'x-csrf-token: qSHpqpknXTd1kkoeKY6xLqyyLLPIcU' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36' \
  -H 'content-type: application/x-www-form-urlencoded; charset=UTF-8' \
  -H 'origin: https://www.bevonordics.se' \
  -H 'referer: https://www.bevonordics.se/alla-produkter/pumpar/poolpumpar/pumpar-med-enkel-hastighet/hayward-poolpump-type-super-pump-17725?c=9857' \
  -H 'cookie: _gcl_au=1.1.2133245834.1625666558; _ga=GA1.2.44217088.1625666563; _hjid=0b9189a7-774b-4054-8b3f-6679b0b1153d; allowCookie=1; _hjDonePolls=680290%2C680275; __csrf_token-6=qSHpqpknXTd1kkoeKY6xLqyyLLPIcU; session-6=24a607a1be1b0acec621d0950311356a1334f24a5463777a4c8fc6b7ef072990; _hjIncludedInPageviewSample=1; _hjTLDTest=1; _hjAbsoluteSessionInProgress=0; _hjIncludedInSessionSample=1; _gid=GA1.2.592682141.1626017440; _gat_UA-646417-39=1; x-ua-device=tablet; nocache=detail-6' \
  --data-raw 'variantNumber=2001257' \
  --compressed

我已经设置了头文件、cookie和所有我认为可能是问题所在的东西,但都不起作用。我似乎不明白为什么这在curl中可以工作,而在python中不能。我不明白问题出在哪里,我需要一些帮助,谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2021-07-12 19:52:52

通过在cookie中设置x-crsf-token修复了这个问题:)谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68344022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档