维扎尔刮削

2024-09-29 23:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着刮威泽的私人用品。我不明白我的代码有什么问题。可能是不正确的有效载荷对象或cookies?在

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36",
    "Accept": "application/json, text/plain, */*",
    "Accept-Encoding": "gzip, deflate, sdch, br",
    "Accept-Language": "en-US,en;q=0.8,lt;q=0.6,ru;q=0.4",
    "Origin": "https://wizzair.com",
    "Referer": "https://wizzair.com/"

}

search_url = "https://wizzair.com/lt-LT/FlightSearch"
session = requests.Session()
r = session.get("https://be.wizzair.com/3.8.2/Api/asset/yellowRibbon", headers=headers, allow_redirects=False)
session_id = r.cookies["ASP.NET_SessionId"]

cookies = {
    "ASP.NET_SessionId": session_id,
    "HomePageSelector": "FlightSearch",
}

# wizz_url = "https://be.wizzair.com/3.8.2/Api/search/search"
wizz_url = "https://be.wizzair.com/3.8.2/Api/asset/farechart"
payload = {"flightList":[{"departureStation":"VNO","arrivalStation":"FCO","departureDate":"2017-02-20"}],"adultCount":1,"childCount":0,"infantCount":0,"wdc":True, "dayInterval":3}
r = session.post(url=wizz_url,data=payload,headers=headers, cookies=cookies)
print r.content


>>> {"validationCodes":["FlightCount_MustBe_OneOrTwo"]}

Tags: httpsltcomapiurlsearchsessionbe
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:34

我运行这个-即使没有会话和cookies-并得到一些数据。在

您必须以JSON的形式发送它-使用json=payload

import requests

payload = {
    "flightList":[
        {
            "departureStation": "VNO",
            "arrivalStation": "FCO",
            "departureDate": "2017-02-20"
        }
    ],
    "adultCount": 1,
    "childCount": 0,
    "infantCount": 0,
    "wdc": True,
    "dayInterval": 3
}

url = 'https://be.wizzair.com/3.8.2/Api/search/search'

r = requests.post(url, json=payload)

print(r.text)

data = r.json()

print(data['outboundFlights'][0]['flightNumber'])

如果必须使用cookies和headers,那么就使用Session,这样就不必将cookie和头从一个请求复制到另一个请求。在

^{pr2}$

相关问题 更多 >

    热门问题