Различные ответы на сайте с RoboBrowser

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

Мой код:

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>

1 ответ

Решение

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

Другие вопросы по тегам