Wizzair刮痧

时间:2017-01-20 20:05:11

标签: python web-scraping python-requests

我正在试图刮WizzAir供个人使用。无法理解我的代码有什么问题。它可能是不正确的有效负载对象还是cookie?

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"]}

1 个答案:

答案 0 :(得分:1)

我运行它 - 即使没有会话和cookie - 并获得一些数据。

您必须使用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'])

如果您必须使用Cookie和标题,请使用Session,然后您不必将Cookie和标题从一个请求复制到另一个请求。

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",
}

s = requests.Session()
s.headers.update(headers)

# to get cookies
r = s.get("https://www.wizzair.com/")

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 = s.post(url, json=payload)

print(r.text)

data = r.json()

print(data['outboundFlights'][0]['flightNumber'])
相关问题