与RoboBrowser不同的网站响应

时间:2016-12-22 02:31:54

标签: python python-requests 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 个答案:

答案 0 :(得分:3)

尝试模仿运行javascript的浏览器会做什么。看起来该网站在加载时正在重新加载页面。这意味着它可能不允许您访问它,除非您有正确的cookie。 xhr请求可能是一个额外的检查,以防止机器人。因此,请使用browser.session保留Cookie,发送xhr请求,然后尝试使用新Cookie重新加载页面。