Я пытаюсь очистить веб-сайт с помощью модуля запросов.
Используя Chrome и проверяя элементы, я перехожу по URL-адресу, заполняю форму и нажимаю кнопку «Продолжить». Элементы проверки Chrome (сетевые документы) показывают, что Chrome отправил с почтой. Он также показывает несколько файлов cookie. Сайт перенаправляет на URL-адрес, среди прочего с идентификатором сеанса.
Чтобы смоделировать это, я пытаюсь использовать запросы. Я беру данные формы из элементов проверки и переформатирую их в словарь. Я использую request.session для включения файлов cookie.
import requests
form_data = 'currentCalForm=dep¤tCodeForm=&tripType=oneWay&searchCategory=award&originAirport=JFK&flightParams.flightDateParams.travelMonth=5&flightParams.flightDateParams.travelDay=14&flightParams.flightDateParams.searchTime=040001&destinationAirport=LHR&returnDate.travelMonth=-1000&returnDate.travelDay=-1000&adultPassengerCount=2&adultPassengerCount=1&serviceclass=coach&searchTypeMode=matrix&awardDatesFlexible=true&originAlternateAirportDistance=0&destinationAlternateAirportDistance=0&discountCode=&flightSearch=award&dateChanged=false&fromSearchPage=true&advancedSearchOpened=false&numberOfFlightsToDisplay=10&searchCategory=&aairpassSearchType=false&moreOptionsIndicator=oneWay&seniorPassengerCount=0&youngAdultPassengerCount=0&childPassengerCount=0&infantPassengerCount=0&passengerCount=2'.split('&')
payload = {}
for item in form_data:
key, value = item.split('=')
if value:
payload[key] = value
with requests.session() as s:
r = s.post('https://www.aa.com/homePage.do', params = payload, allow_redirects=True)
print r.headers
print r.history
print r.url
print r.status_code
with open('x.htm', 'wb') as f:
f.write(r.text.encode('utf8'))
запросы, однако, похоже, не следуют перенаправлению. история пуста, и URL-адрес, похоже, является данными, которые я отправил, а не тем, что вернул сайт. x.htm показывает веб-страницу, но не содержит ожидаемой информации.
Из http://docs.python-requests.org/en/latest/user/quickstart/#redirection-and-history Я ожидал, что r.url будет содержать перенаправленный URL-адрес, а r.history — код ответа http.
Что я делаю не так?
wireshark
? - person Ofir Israel   schedule 23.09.2013