2016-12-22 16 views
3

WebサイトのHTMLを取得しようとしています。 Chromeでページを表示すると、日付とレートオプションのあるフォームが表示されます。しかし、私がRoboBrowserでサイトをリクエストすると、HTMLレスポンスが全く異なっています。私が間違っていることは何ですか?RoboBrowserとの異なるWebサイトの応答

マイコード:

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)に表示されているようにrequests.Session()で始まるため、 – Casey

関連する問題