2016-12-22 8 views
3

Я пытаюсь получить HTML-код для веб-сайта. Когда я просматриваю страницу в Chrome, я вижу форму с датами и параметрами скорости. Но когда я запрашиваю сайт с RoboBrowser, я вижу короткий ответ HTML, который совершенно другой. Что я делаю неправильно?Ответ на другой веб-сайт с RoboBrowser

Мой код:

from robobrowser import RoboBrowser 
browser = RoboBrowser(parser='html.parser') 

browser.open('http://www.marriott.com/reservation/availabilitySearch.mi?propertyCode=ATLRZ') 

print(browser.parsed) 

Результат:

<!DOCTYPE doctype html> 

<html> 
<head><script src="/common/js/marriottCommon.js" type="text/javascript"> </script> 
<meta charset="utf-8"> 
</meta></head> 
<body> 
<script> 
     var xhttp = new XMLHttpRequest(); 
     xhttp.addEventListener("load", function(a,b,c){ 
      window.location.reload() 
     }); 
     xhttp.open('GET', '/reservation/availabilitySearch.mi?istl_enable=true&istl_data', true); 
     xhttp.send(); 
     </script> 
</body> 
</html> 

ответ

3

Попытка имитировать то, что на JavaScript работает браузер будет делать. Похоже, сайт загружает страницу при загрузке. Это означает, что он может не позволить вам получить доступ к нему, если у вас нет правильных файлов cookie. Запрос xhr может быть дополнительной проверкой для предотвращения ботов. Поэтому используйте browser.session, чтобы сохранить файлы cookie, отправить запрос xhr, а затем попытаться перезагрузить страницу с помощью ваших новых файлов cookie.

+0

спасибо. Я открыл запрос на связь XHR между моими другими запросами. Это заставило меня шагнуть дальше, но теперь я получаю страницу «ваша сессия, приуроченная». – Casey

+0

Вы используете 'browser.session' для всех ваших запросов? –

+0

Да, потому что каждый экземпляр RoboBrowser начинается с запросов. Сессия() как показано [здесь] (http://robobrowser.readthedocs.io/en/latest/_modules/robobrowser/browser.html#RoboBrowser) – Casey

 Смежные вопросы

  • Нет связанных вопросов^_^