2016-10-25 9 views
0

次のコードを使用してWebページを取得します。Python - 要求を使用してサーバーの応答を待つ方法

import requests 
payload = {'name': temp} #I extract temp from another page. 
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:49.0) Gecko/20100101 Firefox/49.0','Accept': 'text/html, */*; q=0.01','Accept-Language': 'en-US,en;q=0.5', 'X-Requested-With': 'XMLHttpRequest' } 
full_url = url.rstrip() + '/test/log?' 
r = requests.get(full_url, params=payload, headers=headers, stream=True)      
for line in r.iter_lines(): 
    if line: 
    print line 

しかし、何らかの理由でhttp応答にタグ内のテキストが欠けています。
私がBurpにリクエストを送り、それを傍受して3秒待ってから転送すると、タグ内のテキストを含む完全なHTMLページが得られることが分かりました.... 私はまだ原因を見つけることができませんでした。アイデア?リクエストのドキュメントから

+4

'requests.get'は同期的です。応答はそれ自身で待機します。 Burpとは何ですか? – Barmar

+0

Burpはプロキシソフトウェア – acemutha

+0

です。サーバー上のデータを更新する要求を最初に送信してから、結果を得るための2回目の要求を送信していますか?おそらく、最初のリクエストがまだ完了していない可能性があります。 – Barmar

答えて

0

:あなたが要求を行うときにデフォルトで

は、レスポンスのボディは すぐにダウンロードされます。あなたは、この動作を無効にして、ストリームのパラメータを持つResponse.content 属性にアクセスするまで、レスポンスボディをダウンロード を延期することができます

つまり

Body Content Workflow

はあなたrequests.get()

stream=Trueを削除してみてくださいまたは

r.contentにアクセスするとすべてのコンテンツが表示されます。rは、ポンセ。

+2

レスポンス本文にタグの内容が含まれているかどうかはどのように変更されますか? – Barmar

+0

言い換えれば教えてください。あなたが何を意味するかわからない – acemutha

+0

@abc。私はすでにそれを試して、運は – acemutha

関連する問題