Python - использование запросов отправляет сообщение

Я использовал Postman, чтобы отправить необработанный запрос на веб-сайт Jetstar, чтобы получить информацию о рейсе. И я хотел использовать скрипт python, чтобы сделать то же самое с помощью библиотеки запросов, но я не могу вернуть правильный ответ.

Вот что я сделал в Postman:

введите описание изображения здесь

И простой скрипт, который я использовал для отправки почтового запроса:

import requests
files = {'file': open('PostContent.txt', 'rb')}
if __name__ == "__name__"):
    url = "http://www.jetstar.com/"
    r = requests.post(url, files = files)
    print(r.text)

Когда я запускаю скрипт python, я всегда получаю приветственную страницу, а не информацию о рейсе. Я не уверен, что это за ошибка?

Примечание. PostContent.txt содержит данные формы в необработанном тексте, когда я ищу рейсы.

Я использовал Chrome Dev Tool для захвата запроса POST при поиске определенной даты полета. И это данные формы в заголовках. введите описание изображения здесь


person OhMyGosh    schedule 13.12.2014    source источник
comment
Какое содержание PostContent.txt?   -  person Pablo Santa Cruz    schedule 13.12.2014
comment
Привет, @PabloSantaCruz, я только что отредактировал свой вопрос, надеюсь, для вас он станет понятнее!   -  person OhMyGosh    schedule 13.12.2014
comment
Отправьте PostContent.txt в виде текста.   -  person wenzul    schedule 13.12.2014
comment
Возможно, попробуйте закодировать данные POST с помощью urllib.urlencode(files); если это не сработает, откройте анализатор пакетов, например wirehark, и проверьте, как выглядят отправляемые данные.   -  person Ryan    schedule 13.12.2014


Ответы (2)


Попробуйте использовать словарь вместо ФАЙЛА. ФАЙЛ должен быть предназначен для публикации ФАЙЛА, а не сообщения, ЗАКОДИРОВАННОГО ФОРМОЙ, чего, вероятно, ожидает сайт.

payload = {
   'DropDownListCurrency': 'SGD'
}
r = requests.post("http://httpbin.org/post", data=payload)
person Pablo Santa Cruz    schedule 13.12.2014
comment
Ага, ты прав, @Pablo! Но знаете ли вы, как преобразовать текстовый файл в диктовку на Python? Потому что я тоже новичок в Python! - person OhMyGosh; 13.12.2014

Вы используете ключ file, который не подходит для этого типа запроса. Также ваш пример кода не работает! Просто вставьте сюда рабочий код ...

import requests
import logging

logging.basicConfig(level=logging.DEBUG)

payload = {"__EVENTTARGET":"",
"__EVENTARGUMENT":"",
"__VIEWSTATE":"/wEPDwUBMGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFJ01lbWJlckxvZ2luU2VhcmNoVmlldyRtZW1iZXJfUmVtZW1iZXJtZSDCMtVG/1lYc7dy4fVekQjBMvD5",
"pageToken":"",
"total_price":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$RadioButtonMarketStructure":"RoundTrip",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketOrigin1":"Nadi (NAN)",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketDestination1":"Melbourne (Tullamarine) (MEL)",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureDate1":"14/01/2015",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDestinationDate1":"16/02/2015",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$DropDownListCurrency":"AUD",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketOrigin2":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketDestination2":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureDate2":"16/02/2015",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDestinationDate2":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketOrigin3":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketDestination3":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureDate3":"27/12/2014",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDestinationDate3":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketOrigin4":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketDestination4":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureDate4":"03/01/2015",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDestinationDate4":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketOrigin5":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketDestination5":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureDate5":"10/01/2015",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDestinationDate5":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketOrigin6":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMarketDestination6":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureDate6":"17/01/2015",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDestinationDate6":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$DropDownListPassengerType_ADT":1,
"ControlGroupSearchView$AvailabilitySearchInputSearchView$DropDownListPassengerType_CHD":0,
"ControlGroupSearchView$AvailabilitySearchInputSearchView$DropDownListPassengerType_INFANT":0,
"ControlGroupSearchView$AvailabilitySearchInputSearchView$RadioButtonSearchBy":"SearchStandard",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMultiCityOrigin1":"Origin",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMultiCityDestination1":"Destination",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureMultiDate1":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMultiCityOrigin2":"Origin",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextBoxMultiCityDestination2":"Destination",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$TextboxDepartureMultiDate2":"",
"ControlGroupSearchView$AvailabilitySearchInputSearchView$DropDownListMultiPassengerType_ADT":1,
"ControlGroupSearchView$AvailabilitySearchInputSearchView$DropDownListMultiPassengerType_CHD":0,
"ControlGroupSearchView$AvailabilitySearchInputSearchView$DropDownListMultiPassengerType_INFANT":0,
"ControlGroupSearchView$AvailabilitySearchInputSearchView$numberTrips":2,
"ControlGroupSearchView$AvailabilitySearchInputSearchView$ButtonSubmit":""}

if __name__ == "__main__":
    url = "http://booknow.jetstar.com/Search.aspx"
    r = requests.post(url, data=payload)
    print(r.text)
person wenzul    schedule 13.12.2014
comment
Привет @wenzul, как ты получил словарь полезной нагрузки? Вы его жестко запрограммировали или использовали какой-нибудь скрипт для его создания? - person OhMyGosh; 13.12.2014
comment
Может он работает с scrapy. Не знаю. Просто скопируйте содержимое и вставьте цитату с помощью регулярного выражения. - person wenzul; 13.12.2014